2024-04-26 21:57:44 发布
网友
我有一个熊猫数据帧,我想计算与开始值相比的百分比差异。有没有办法使用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
编辑:正如大卫所建议的,有比这更好的解决方案。我会留下答案,让你们知道什么是不该做的:)
您始终可以使用额外的列来提供帮助。这相当容易:
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
你能行
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
是的,这可以使用pct_change()完成
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
编辑:正如大卫所建议的,有比这更好的解决方案。我会留下答案,让你们知道什么是不该做的:)
您始终可以使用额外的列来提供帮助。这相当容易:
输出:
你能行
或
输出:
是的,这可以使用
pct_change()
完成如果不关心方向
(+/-)
,则也可以取绝对值:相关问题 更多 >
编程相关推荐