Python 分组滚动平均数

Python 分组滚动平均数,python,pandas,Python,Pandas,我有一系列的表格: Contract Date 196012 1960-01-05 110.70 1960-01-07 110.70 1960-01-08 110.40 1960-01-11 110.00 1960-01-12 109.60 1960-01-13 109.70 1960-01-14 109.50

我有一系列的表格:

Contract  Date      
196012    1960-01-05    110.70
          1960-01-07    110.70
          1960-01-08    110.40
          1960-01-11    110.00
          1960-01-12    109.60
          1960-01-13    109.70
          1960-01-14    109.50
          1960-01-15    109.60
          1960-01-18    109.60
          1960-01-19    110.20
          1960-01-20    110.00
          1960-01-21    110.30
          1960-01-22    110.00
          1960-01-25    109.50
          1960-01-26    109.60
          1960-01-28    109.70
          1960-01-29    110.00
          1960-02-01    109.60
          1960-02-02    109.60
          1960-02-03    109.60
          1960-02-04    110.10
          1960-02-05    110.20
          1960-02-08    110.20
          1960-02-09    110.50
          1960-02-10    110.10
          1960-02-11    109.50
          1960-02-12    110.40
          1960-02-15    110.00
          1960-02-16    109.50
          1960-02-17    110.00
                         ...  
201812    2016-06-29    403.00
          2016-06-30    398.00
          2016-07-01    404.25
          2016-07-05    402.00
          2016-07-06    394.00
201912    2015-12-16    417.00
          2015-12-17    415.00
          2015-12-23    416.00
其中索引是分层多索引。我想对每个合同应用一个滚动窗口平均值,并将结果保存到一个新列

正确的方法是什么?

您想
分组方式(级别=0)
然后
滚动(n).mean()


如果希望滚动平均值是同一数据帧中的新列:


df['rolling\u mean']=df.groupby(level=0).rolling(window\u size).mean().值

也许可以看出,问题不在于滚动平均值,而在于组/多索引是棘手的部分。
合同
级别重复。您可以使用
t.index=t.index.droplevel(0)
对其进行重复数据消除,其中
t
是您的
groupby
的结果。
s.groupby(level=0).rolling(10).mean()