如何在熊猫中滚动不重叠的窗口

时间:2019-12-06 12:13:14

标签: python pandas

我的数据框如下:

       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整除。滚动功能无法实现。

2 个答案:

答案 0 :(得分:5)

如果存在默认索引值,请使用3除以整数,然后将min传递到GroupBy.transform

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

答案 1 :(得分:2)

您也可以这样做:

>>> df['min'] = df['c1'][::3]
>>> df.ffill().astype(int)

   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