获取没有重叠的滑动 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
鉴于此数据框:
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