熊猫的滚动平均值

问题描述 投票:1回答:1

我有一个包含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)解决了这个问题。但滚动不接受负值作为输入。请建议解决此问题。谢谢。

python pandas moving-average rolling-average
1个回答
2
投票

由于您不想排序,这里有一个解决方法。您可以反转您的数据框,采用滚动均值,然后再将其反转。

df[::-1].rolling(window=2).mean()[::-1]

输出:

        Price
23 Jan  97.5
22 Jan  92.5
21 Jan  NaN
© www.soinside.com 2019 - 2024. All rights reserved.