我的数据框如下:
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整除。滚动功能无法实现。
答案 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