我正在寻找一种基于过去n天中每个组的非空值的平均值生成移动窗口的方法。
例如,如果移动窗口大小为3,则我想根据每个组的ct列中的非空值(即具有滞后效应)来生成MovAvg列。
Date Group ct MovAvg
1/1/71 A NaN NaN
2/1/71 A 1 NaN
3/1/71 A NaN NaN
4/1/71 A NaN 1
5/1/71 A 1 1
6/1/71 A NaN 1
7/1/71 A 0 1
8/1/71 A NaN 0.5
9/1/71 A NaN 0
10/1/71 A 1 0
11/1/71 A 0 1
1/1/71 B NaN NaN
2/1/71 B 1 NaN
3/1/71 B NaN NaN
4/1/71 B NaN 1
5/1/71 B 0 1
6/1/71 B 1 0
7/1/71 B 1 0.5
8/1/71 B NaN 0.67
9/1/71 B NaN 1
10/1/71 B 1 1
11/1/71 B 0 1
最佳答案
df['MovAvg'] = df['ct'].groupby(df['Group']).rolling(3, min_periods=1).mean().shift()
关于python - Pandas groupby中非空值的移位和滚动平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55955465/