迭代地将列中其他列的百分比增加

2024-09-29 07:27:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个像下面这样的数据帧。我想迭代地将val增加pct_change,以获得适当的group。例如,对于group==1var将首先保持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

Tags: 数据importdataframepandasdfvarasgroup
1条回答
网友
1楼 · 发布于 2024-09-29 07:27:05

IIUCcumprod

df.assign(pct_change=(df['pct_change']+1)).groupby('group')['pct_change'].apply(lambda x : x.cumprod()/x.iloc[0])
Out[229]: 
0    1.00
1    1.00
2    1.10
3    1.20
4    1.32
5    1.26
Name: pct_change, dtype: float64

相关问题 更多 >