我是大熊猫的新手,并希望得到以下问题的指导。我有一个如下所示的数据框:
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的滚动平均功能,我如何编写逻辑来检查特定点的前任或后续行?
答案 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