Используйте np.arange
, чтобы вычислить массив от 0
до len (df) -1
, а затем вычислить все деление. Мы можем использовать этот массив вместе с DataFrame.groupby
.
n=9
df.groupby(np.arange(len(df))//n).max()
Пример
Настройка
df=pd.DataFrame({'A':range(30)})
print(df)
A
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20
21 21
22 22
23 23
24 24
25 25
26 26
27 27
28 28
29 29
Решение
n=9
df_max = df.groupby(np.arange(len(df))//n).max()
print(df_max)
A
0 8
1 17
2 26
3 29
Как видите, группы, перечисленные от 0 до m, создаются. Полученный DataFrame является максимальным значением для каждой группы.
Вы также можете выбрать столбцы для вычисления max
df.groupby(np.arange(len(df))//n)[cols].max()
и, конечно, использовать groupby.agg
* 1037. * если вы хотите использовать более одной функции
Подробно
np.arange(len(df))//n
#array([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
# 2, 2, 2, 2, 2, 3, 3, 3])
РЕДАКТИРОВАТЬ
first_row = 2
df2 = df[first_row:]
df2.groupby(np.arange(len(df2))//n).max()