作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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 中会有更优雅的方法来做到这一点(相当于矢量化与 for 循环)。谁能建议正确的 pandas 方法?
最佳答案
调用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
等...
关于python - 在 Pandas 中高效地进行行间计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32992245/
我是一名优秀的程序员,十分优秀!