几个月的移动平均数

时间:2015-08-02 17:54:01

标签: python numpy pandas

我是大熊猫的新手,并希望得到以下问题的指导。我有一个如下所示的数据框:

In [88]: df.head()
Out[88]: 
       Jan  Feb  Mar  Apr  May  Jun  ...    Dec
Year                               ...     
1758    13   15   14    5    5    5  ...     12
1759    11   10    7    4    3    6  ...     11
1760    19   15   18    5   13    6  ...     11
1761    14   16   14    9    9   11  ...     10
1762    13   12   12    8    5    3  ...     11

我需要以下列方式计算每月的移动平均值:

Mar_1761的Moving_average =(value_of_Mar_1761)/(从Sep_1760到Aug_1761的值之和)

如果我使用pandas的滚动平均功能,我如何编写逻辑来检查特定点的前任或后续行?

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用.stack将数据重新整形为长格式,这可以直接传递到滚动平均值。

In [34]: pd.rolling_mean(df.stack(), window=12)
Out[34]: 
Year     
1758  Jan         NaN
      Feb         NaN
      Mar         NaN
      Apr         NaN
      May         NaN
      Jun         NaN
      Jul         NaN
      Aug         NaN
      Sep         NaN
      Oct         NaN
      Nov         NaN
      Dec    0.035038
1759  Jan   -0.076660
      Feb   -0.153907
      Mar   -0.286818
      Apr   -0.306684
      May   -0.159371
      Jun   -0.230627
      Jul   -0.175845