首页 > 解决方案 > 如何在熊猫中滚动非重叠窗口

问题描述

我的数据框看起来像:

       c1   
    0  10  
    1  11  
    2  12
    3  13
    4  14
    5  15
    6  16
    7  17

我想找到每 3 行的最小值。看起来像:

       c1  min 
    0  10  10
    1  11  10
    2  12  10
    3  13  13
    4  14  13
    5  15  13
    6  16  16
    7  17  16

并且行数可能不能被3整除。我无法通过滚动功能实现它。

标签: pythonpandas

解决方案


如果存在默认索引值,请使用整数除法3并传递给GroupBy.transformwith min

df['min'] = df['c1'].groupby(df.index // 3).transform('min')

或者如果有任何index生成助手np.arange

df['min'] = df['c1'].groupby(np.arange(len(df)) // 3).transform('min')

print (df)
   c1  min
0  10   10
1  11   10
2  12   10
3  13   13
4  14   13
5  15   13
6  16   16
7  17   16

推荐阅读