获取没有重叠的滑动 window 均值

Get sliding window mean with no overlap

鉴于此数据框:

df = pd.DataFrame({ 'id_val' : [1,2,3,4,5] , 'c1': [1.0 , 2.0, 3.0,4.0,5.0]})

我正在尝试 return 平均滑动 window 行 c1 的每 2 个值且不重叠:

[1,2] , [3,4] , [5] 的平均值 = [1.5 , 3.5, 5 ]

df.rolling(2)['c1'].mean()[1::2]

returns:

我认为这意味着滚动 window 大小 2,计算 'c1' 的平均值,[1::2] 表示从第二行开始,每隔两行 return .这是正确的吗?

为了 return [5] 这是最后一行的平均值,我可以 return 数据帧的 c1 的最后一个值,但这看起来很笨重,有没有更简洁的方法?

这样呢:

df.groupby(pd.cut(df['c1'],[0,2,4,6]))['c1'].mean().reset_index(drop=True)

结果:

0    1.5
1    3.5
2    5.0
Name: c1, dtype: float64