我正在寻找一种基于过去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/

10-10 02:00