熊猫滚动平均值

时间:2019-01-23 06:49:32

标签: python pandas moving-average rolling-average

我有一个包含2列的数据框-日期和价格。数据首先以最新日期进行排序(第一行1月23日,第二行1月22日,依此类推)。

Date   Price
23 Jan 100
22 Jan 95
21 Jan 90
.
.
.

我想为此时间序列数据计算2天滚动平均价格。我正在使用这个:

df.rolling(2).mean()

它的作用是,将NaN分配给第一行(1月23日),然后将第二行的NaN分配为1月23日和1月22日价格的平均值。远期数据(1月23日价格)。我需要的是1月23日的移动平均值是1月23日和1月22日的平均值。这样MA的最后一个值将是NaN而不是第一个值。

我不想做的是先对这些数据进行排序,然后再计算。

我与pct_change()有相同的问题。但是,pct_change(-1)解决了该问题。但是滚动不接受负值作为输入。请提出解决此问题的方法。谢谢。

1 个答案:

答案 0 :(得分:2)

由于您不想排序,因此这里是一种解决方法。您可以反转数据框,采用滚动平均值,然后再次反转。

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

输出:

        Price
23 Jan  97.5
22 Jan  92.5
21 Jan  NaN