從Nickil Maveli的評論回答使用以下,
import pandas as pd
import numpy as np
df = pd.DataFrame({'b': np.random.rand(10) > 0.5})
df2 = df.iloc[[2,5,6,8]]
df2.reindex(df.index, method='nearest')
在answe你的問題,
why did my approach failed?
I相信這是與NaNs爲np.nan
這一事實有關,因此屬於浮點型。在使用reindex
時,它會填充NaN之前的所有NaN。因此,使用您的原始方法創建了一個混合數組float
和bool
*。
看看我們如何能夠在插值只是bool
df2.reindex(df.index).astype(bool).interpolate('nearest')
Out[1]:
b
0 True
1 True
2 True
3 True
4 True
5 False
6 False
7 True
8 False
9 True
或只是float
df2.reindex(df.index).astype(float).interpolate('nearest')
Out[2]:
b
0 NaN
1 NaN
2 1.0
3 1.0
4 1.0
5 1.0
6 0.0
7 0.0
8 0.0
9 NaN
注意,bool
運行相當意外,因爲它填充用的NaN True
。因此,最初的答案似乎工作效率最高。
*這與內容不完全符合錯誤信息的內容,所以我可能稍微偏離了一點,但我認爲一般概念是正確的。
不是'df2.reindex(df.index,method ='nearest')'按預期工作嗎?它的工作原理是 –
。謝謝。帖子是一個答案,我會接受它。爲什麼我的方法失敗了? –