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并将它们输入数组,但这太荒谬了!
我使用wheremethod 并指定将 any 替换0为np.nan. 一旦我们指定0为NaN我们就可以使用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)