熊猫动态列修改

时间:2017-12-08 20:32:33

标签: python-3.x pandas

编辑:

我正在尝试使用相同的列和前一个列计算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循环吗?感谢

0 个答案:

没有答案