在列中输入具有最近邻平均值的缺失值

Lad*_*lav 6 python dataframe pandas

我有一个数据框:

df = pd.DataFrame(data=[676, 0, 670, 0, 668], index=['2012-01-31 00:00:00','2012-02-29 00:00:00',
                                                     '2012-03-31 00:00:00','2012-04-30 00:00:00',
                                                     '2012-05-31 00:00:00'])  
df.index.name = "Date"
df.columns = ["Number"]
Run Code Online (Sandbox Code Playgroud)

看起来像:

              Number
Date    
2012-01-31 00:00:00 676
2012-02-29 00:00:00 0
2012-03-31 00:00:00 670
2012-04-30 00:00:00 0
2012-05-31 00:00:00 668
Run Code Online (Sandbox Code Playgroud)

如何分别输入 (676+670)/2 和 (670+668)/2 的第二个和第四个值?

我可以将值另存为np.array并将它们输入数组,但这太荒谬了!

spi*_*006 5

我使用wheremethod 并指定将 any 替换0np.nan. 一旦我们指定0NaN我们就可以使用fillna方法。通过使用ffill和,bfill我们NaN用相应的先前和继续值填充所有值,将它们相加,然后除以 2。

df.where(df.replace(to_replace=0, value=np.nan),
 other=(df.fillna(method='ffill') + df.fillna(method='bfill'))/2)

                     Number
Date                       
2012-01-31 00:00:00   676.0
2012-02-29 00:00:00   673.0
2012-03-31 00:00:00   670.0
2012-04-30 00:00:00   669.0
2012-05-31 00:00:00   668.0
Run Code Online (Sandbox Code Playgroud)