我有一个pandas数据框,如下所示:
Date A B C D
2015-08-07 1 2 4 5
2015-08-06 5 6 2 5
2015-08-05 9 6 3 0
...
2015-09-01 3 4 6 7
我需要生成一个新的数据框,其中行值变为与前一天相比的日常变化。
Date A B C D
2015-08-07 -4 -4 2 0 # 2015-08-07 data minus the 2015-08-06 data
2015-08-06 -4 0 -1 5
...
2015-09-02
我可以用奇怪的for循环和令人讨厌的索引黑客做到这一点,但我确信在pandas中会有更优雅的方法(相当于vectorization和for-loops)。谁能建议合适的熊猫方法?
答案 0 :(得分:3)
致电diff
并通过-1
向上移动一段时间:
In [69]:
df.diff(-1)
Out[69]:
Date A B C D
0 1 days -4 -4 2 0
1 1 days -4 0 -1 5
2 -27 days 6 2 -3 -7
3 NaT NaN NaN NaN NaN
此外,您几乎不需要按行迭代,因此请避免使用for
循环,apply
,iterrows
等等。