首页 > 解决方案 > 获取没有重叠的滑动窗口平均值

问题描述

鉴于此数据框:

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

在此处输入图像描述

我试图返回 c1 行的每 2 个值的滑动窗口的平均值,没有重叠:

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

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

返回:

在此处输入图像描述

我认为这意味着采用大小为 2 的滚动窗口,计算“c1”的平均值,[1::2]意味着从第二行开始并每隔第二行返回一次。这个对吗 ?

为了返回 [5] 这是最后一行的平均值,我可以为数据帧返回 c1 的最后一个值,但这似乎很笨重,有没有更清洁的方法?

标签: pythonpandassliding-window

解决方案


这种方式怎么样:

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

推荐阅读