在python中计算每n行数据帧的最大/最小值

在python中计算每n行数据帧的最大/最小值,python,pandas,dataframe,max,min,Python,Pandas,Dataframe,Max,Min,我想计算df中每n行的最小值/最大值,比如说10,但是使用df.rolling(10)。max()给出0-9、1-10、2-11等行的值。我想要0-9、10-19、20-29等 对于大型数据集,有没有一种简洁的方法可以做到这一点 谢谢使用 计算0到len(df)-1的数组,然后计算整个除数。我们可以将此数组与一起使用 示例 设置 df=pd.DataFrame({'A':range(30)}) print(df) A 0 0 1 1 2 2 3 3 4

我想计算df中每n行的最小值/最大值,比如说10,但是使用df.rolling(10)。max()给出0-9、1-10、2-11等行的值。我想要0-9、10-19、20-29等

对于大型数据集,有没有一种简洁的方法可以做到这一点

谢谢使用 计算
0
len(df)-1的数组,然后计算整个除数。我们可以将此数组与一起使用


示例 设置

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列出的组。结果数据帧是每个组的最大值


您还可以选择列来计算
max

df.groupby(np.arange(len(df))//n)[cols].max()
当然,如果您想使用多个函数,请使用

细节

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()

成功的关键是按照np.arange(len(df.index))//10(或change)进行分组 10(组大小)到您需要的任何其他值)

假设您有3列要计算最小/最大值(['A','B','C']), 您可以运行:

df.groupby(np.arange(len(df.index)) // 10)[['A', 'B', 'C']].agg(['min', 'max'])

这是我的解决方案,将len(df)
更改为len
(df.index)
请不要复制解决方案我们的解决方案仅相隔3分钟,因此没有人可以声称我刚刚复制了您的解决方案。另一方面,我包含了计算所有必需函数的代码,而不仅仅是max()。这非常有效!是否有方法将其偏移,以便第一行可以是任何行?是的,请选中“节编辑”
df.groupby(np.arange(len(df.index)) // 10)[['A', 'B', 'C']].agg(['min', 'max'])