我有以下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
有一个简单的命令吗?如果没有,你有什么建议来实现这个结果?
答案 0 :(得分:11)
您可以在数据框上使用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()
。
答案 1 :(得分: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
答案 2 :(得分:0)
您可以使用以下代码复制Alexander的回复。我担心罗曼的反应有错误的迹象
>>> (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