Pandas 数据帧具有多个索引时的滚动平均值计算
我希望为2个周期创建一个平均值。但我的问题是,在每个时期,我有一个类别,我想为每个类别创建一个单独的平均值。 i、 e 前两个字段是我的索引。 我想要2个周期的滚动平均值,但如果我只使用: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
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