Pandas 数据帧具有多个索引时的滚动平均值计算

Pandas 数据帧具有多个索引时的滚动平均值计算,pandas,Pandas,我希望为2个周期创建一个平均值。但我的问题是,在每个时期,我有一个类别,我想为每个类别创建一个单独的平均值。 i、 e 前两个字段是我的索引。 我想要2个周期的滚动平均值,但如果我只使用: df['ACTBalance'].rolling(2).mean() 它只计算两个相邻值的平均值。因此,对于2017年5月31日,默认情况下,它将计算:(500+150)/2,但我想要的是:(500+100)/2 我如何才能做到这一点?您需要groupby df.groupby(level=1).ACTBa

我希望为2个周期创建一个平均值。但我的问题是,在每个时期,我有一个类别,我想为每个类别创建一个单独的平均值。 i、 e

前两个字段是我的索引。 我想要2个周期的滚动平均值,但如果我只使用:

df['ACTBalance'].rolling(2).mean()
它只计算两个相邻值的平均值。因此,对于2017年5月31日,默认情况下,它将计算:(500+150)/2,但我想要的是:(500+100)/2
我如何才能做到这一点?

您需要
groupby

df.groupby(level=1).ACTBalance.apply(lambda x : x.rolling(2).mean())
Out[96]: 
Period      AcctStatus
31/01/2017  Active          NaN
            Default         NaN
28/02/2017  Active        200.0
            Default       220.0
31/03/2017  Active        375.0
            Default       270.0
30/04/2017  Active        300.0
            Default       200.0
31/05/2017  Active        150.0
            Default       300.0
Name: ACTBalance, dtype: float64

谢谢,级别=1是指ActStatus还是期间?@Victor是指AcctStatusThanks,新列似乎也被称为ActBalance?是否可以为其动态分配不同的名称?像MA_2PRD
p=2
df['MA{}PRD'.format(p)]=df.groupby(level=1.ACTBalance.apply(lambda x:x.rolling(p.mean())
@Victor您可以试试这个:-)
df.groupby(level=1).ACTBalance.apply(lambda x : x.rolling(2).mean())
Out[96]: 
Period      AcctStatus
31/01/2017  Active          NaN
            Default         NaN
28/02/2017  Active        200.0
            Default       220.0
31/03/2017  Active        375.0
            Default       270.0
30/04/2017  Active        300.0
            Default       200.0
31/05/2017  Active        150.0
            Default       300.0
Name: ACTBalance, dtype: float64