我正在寻找一种方法来根据每组过去 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/