我有一个pandas数据框,我想计算与初始值相比的百分比差异。有没有办法使用pct_change()完成此任务?
例如
我的数据
date close
2020-05-08 100
2020-05-11 102
2020-05-12 108
我希望更改看起来像
date close change (%)
2020-05-08 100 0
2020-05-11 102 2
2020-05-12 108 8
答案 0 :(得分:1)
是的,可以使用pct_change()
完成。
df['change'] = (df['close'].pct_change().fillna(0).add(1).cumprod().sub(1))*100
如果您不关心方向(+/-)
,那么也可以采用绝对值:
df['change'] = (df['close'].pct_change().fillna(0).add(1).cumprod().sub(1).abs())*100
答案 1 :(得分:1)
你可以做
df['change'] = df['close'].div(df['close'].iloc[0]).sub(1).mul(100)
或
df['change'] = (df.close/df.close.iloc[0] - 1) * 100
输出:
date close change
0 2020-05-08 100 0.0
1 2020-05-11 102 2.0
2 2020-05-12 108 8.0
答案 2 :(得分:0)
编辑:正如David所建议的,有比这更好的解决方案。我会留下答案,以便你们男孩和女孩知道不要做什么:)。
您始终可以使用额外的列来提供帮助。这很简单:
start_value = 100 #or access through the index
df['beginning'] = start_value
df['change (%)'] = 100 * (df.close/df.beginning - 1)
df
输出:
date close beginning change (%)
0 2020-05-08 100 100 0.0
1 2020-05-11 102 100 2.0
2 2020-05-12 108 100 8.0