我有一个数据框:
df = pd.DataFrame({'A': ['a','a','a','b','b','b'],
'B': [1,3,2,5,2,0],
'C': [1,1,1,1,1,0]
})
df
A B C
0 a 1 1
1 a 3 1
2 a 2 1
3 b 5 1
4 b 2 1
5 b 0 0
要计算A
中每个组的指数加权移动平均值,我可以这样做:
df.groupby('A')['B'].apply(lambda x: x.ewm(halflife=12).mean())
0 1.000000
1 2.028873
2 2.018688
3 5.000000
4 3.456690
5 2.237302
具有指定的半衰期:
给出了计算详细信息here。
我想做的是计算滚动窗口为2的每个组的指数加权移动平均值。
预期输出为:
0 1.000000
1 2.028873
2 2.485563
3 5.000000
4 3.456690
5 0.971127
这似乎不起作用:
df.groupby('A')['B'].apply(lambda x: x.rolling(2).ewm(halflife=12).mean())
但是,我希望看到一个涉及.rolling()
方法的解决方案。