python - Pandas 中的滚动平均值
问题描述
我有一个包含 2 列的数据框 - 日期和价格。数据首先按最新日期排序(第一行为 1 月 23 日,第二行为 1 月 22 日,依此类推)。
Date Price
23 Jan 100
22 Jan 95
21 Jan 90
.
.
.
我想计算这个时间序列数据的 2 天滚动平均价格。我正在使用这个:
df.rolling(2).mean()
它的作用是,它将 NaN 分配给第一行(1 月 23 日),然后将第二行的输出作为 1 月 23 日和 1 月 22 日的价格平均值。这没有用,因为 1 月 22 日的平均值使用的是远期数据( 1 月 23 日的价格)。我需要的是 1 月 23 日的移动平均值是 1 月 23 日和 1 月 22 日的平均值。这样 MA 的最后一个值将是 NaN 而不是第一个值。
我不想做的是先用最旧的数据对这些数据进行排序,然后再计算。
我对 pct_change() 有同样的问题。但是, pct_change(-1) 解决了这个问题。但是滚动不接受负值作为输入。请建议解决此问题的方法。谢谢。
解决方案
由于您不想排序,因此这是一种解决方法。您可以反转您的数据框,采用滚动平均值,然后再次反转它。
df[::-1].rolling(window=2).mean()[::-1]
输出:
Price
23 Jan 97.5
22 Jan 92.5
21 Jan NaN
推荐阅读
- android-biometric-prompt - 使用生物识别时如何打开/关闭身份验证指纹或面部识别
- android - 将多个图像从 uri 移动到文件夹
- centos - 如果没有配置文件中的 ptr 记录,dnsmasq 反向 iplookup 将无法工作
- python - 我可以在计算的同时得到未来的未来和计算状态吗?
- c# - MODEL和DAL之间的循环依赖
- postgresql - 为什么 psql --version 在 zsh macOS 中不起作用?
- flutter - 为什么我的 ListView.builder() 不可滚动?
- python - .predict() 仅在 CPU 上运行,即使 GPU 可用
- sap-ase - 如何在 Sybase ASE 中查找列的默认值
- windows - 脚本适用于 windows 10 但不适用于 windows 7