【发布时间】:2019-06-16 16:51:09
【问题描述】:
我有一个包含 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) 解决了这个问题。但是滚动不接受负值作为输入。请建议解决此问题的方法。谢谢。
【问题讨论】:
-
为什么不希望数据按时间顺序(升序)排序?有什么特别的原因吗?
-
我一直在用 excel 开发这些系统,现在将它们转移到 python 以便于开发。我习惯于首先看到排序为最新日期的值。无论如何,我认为 python 将有一些方法来处理这个问题。只是想检查一下。无论如何,更改排序将是最后的手段。
标签: python pandas moving-average rolling-average