计算与基准值相比的熊猫数据框的变化百分比

时间:2020-05-13 13:08:31

标签: python pandas dataframe

我有一个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

3 个答案:

答案 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
相关问题