在Pandas DataFrame上计算百分比变化

4

I have the following DataFrame:

                 Value        1lag 
Date                                                                     
2005-04-01  258.682029  214.382786 
2005-05-01  173.253998  258.682029
2005-06-01  244.432029  173.253998
2005-07-01  213.706019  244.432029
2005-08-01  213.670665  213.706019

这是两个时间序列的绝对值。然而,我不想要这些绝对值,我想要它们的变化情况,让它们看起来像这样:

                 Value        1lag 
Date                                                                     
2005-04-01         NaN         NaN 
2005-05-01      0.3302     -0.2066
2005-06-01     -0.4108      0.3302
2005-07-01      0.1257     -0.4108
2005-08-01      0.0002      0.1257

有没有简单的命令可以做到这一点?如果没有,您有什么建议来实现这个结果?

1
@Alexander 把这个变成一个答案 - Roman Pekar
3个回答

15
你可以在数据框上直接使用 pct_change() 方法。
>>> df.pct_change()
               Value      1lag
Date                          
2005-04-01       NaN       NaN
2005-05-01 -0.330243  0.206636
2005-06-01  0.410831 -0.330243
2005-07-01 -0.125704  0.410831
2005-08-01 -0.000165 -0.125704

将上面的结果与您的结果进行比较,如果您想要撤销您所做的更改,则需要使用-df.pct_change()


3

像这样的内容吗?

>>> 1 - df / df.shift(1)
               Value      1lag
Date                          
2005-04-01       NaN       NaN
2005-05-01  0.330243 -0.206636
2005-06-01 -0.410831  0.330243
2005-07-01  0.125704 -0.410831
2005-08-01  0.000165  0.125704

0

您可以使用以下代码来复制亚历山大的回答。抱歉,罗曼的回答符号不正确。

>>> (df-df.shift(1))/df.shift(1)
               Value      1lag
2011-01-31       NaN       NaN
2011-02-28 -0.330243  0.206636
2011-03-31  0.410831 -0.330243
2011-04-30 -0.125704  0.410831
2011-05-31 -0.000165 -0.125704

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接