编辑:
我正在尝试使用相同的列和前一个列计算pandas中数据框列内的值。我从这个数据框开始:
foo bar
0 0.51 NaN
1 0.25 NaN
2 0.73 NaN
3 0.08 NaN
4 0.43 0.4
5 0.39 NaN
6 0.15 NaN
7 0.02 NaN
8 0.76 NaN
9 0.41 NaN
我需要从第5行开始以下列方式平滑foo的值:
bar =(bar(上一行)* 4 + foo)/ 5
它应该导致以下结果:
foo bar
0 0.51 NaN
1 0.25 NaN
2 0.73 NaN
3 0.08 NaN
4 0.43 0.4
5 0.39 0.398
6 0.15 0.3484
7 0.02 0.28272
8 0.76 0.378176
9 0.41 0.3845408
我尝试使用df.loc[5:,'bar'] = (df.loc[:,'bar'].shift() * 4 + df.loc[:,'foo']) / 5
,但结果如下:
foo bar
0 0.51 NaN
1 0.25 NaN
2 0.73 NaN
3 0.08 NaN
4 0.43 0.4
5 0.39 0.398
6 0.15 NaN
7 0.02 NaN
8 0.76 NaN
9 0.41 NaN
我可以想象创建了一个df实例并且新的' bar'是从该实例创建的,而不是以递归方式执行。任何人都可以帮忙解决这个问题,而不使用for循环吗?感谢