我有一个像下面这样的数据帧。我想迭代地将val
增加pct_change
,以获得适当的group
。例如,对于group==1
,var
将首先保持1.2,然后是1.2+0.1*1.2=1.32,然后是1.32+0.2*1.32=1.584。没有循环我怎么做?你知道吗
import pandas as pd
df = pd.DataFrame({
'var': [1.2, 1.2, 1.2, 1.2, 1.2, 1.2],
'group': [1, 2, 1, 2, 1, 2],
'pct_change': [0.15, 0.21, 0.1, 0.2, 0.2, 0.1]
})
df
group pct_change var
0 1 0.15 1
1 2 0.21 1
2 1 0.10 1
3 2 0.20 1
4 1 0.20 1
5 2 0.05 1
我想要得到的是:
group pct_change var
0 1 0.15 1.200
1 2 0.21 1.200
2 1 0.10 1.320
3 2 0.20 1.440
4 1 0.20 1.584
5 2 0.05 1.512
更新: @Wen建议的解决方案没有给出正确的答案:
df.assign(pct_change=(df['pct_change']+df['var'])).groupby(['group'])['pct_change'].apply(lambda x : x.cumprod()/x.iloc[0])
0 1.00000
1 1.00000
2 1.42000
3 1.64000
4 2.53328
5 2.56168
IIUC
cumprod
相关问题 更多 >
编程相关推荐