我希望创建2个周期的熊猫滚动平均值。但是我的问题是,在每个期间内我都有一个类别,并且我想为每个类别创建一个单独的均值。 即
Period AcctStatus ACTBalance
31/01/2017 Active 100
Default 200
28/02/2017 Active 300
Default 240
31/03/2017 Active 450
Default 300
30/04/2017 Active 150
Default 100
31/05/2017 Active 150
Default 500
前2个字段是我的索引。 我想要2个周期的滚动平均值,但是如果我只使用:
df['ACTBalance'].rolling(2).mean()
它仅计算两个相邻值的平均值。所以对于31/05/2017,对于Default,它将计算:(500 + 150)/ 2,但是我想要的是:(500 + 100)/ 2 我该如何实现?
答案 0 :(得分:1)
您将需要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