Pandas 的滚动平均值

Rolling Average in 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