计算数据帧中与基线值相比的百分比变化

2024-04-26 21:57:44 发布

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

我有一个熊猫数据帧,我想计算与开始值相比的百分比差异。有没有办法使用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

Tags: 数据closedate差异change百分比办法pct
3条回答

编辑:正如大卫所建议的,有比这更好的解决方案。我会留下答案,让你们知道什么是不该做的:)

您始终可以使用额外的列来提供帮助。这相当容易:

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()完成

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

相关问题 更多 >