在python中,每13行如何查找最大值?

在python中,每13行如何查找最大值?,python,pandas,dataframe,for-loop,Python,Pandas,Dataframe,For Loop,问题是我有以下数据库: A B 1 5 2 6 3 7 4 1 5 4 6 3 7 5 8 8 9 5 假设此数据帧的名称为df 所以我想让代码,在这种情况下,每3行,我的情况13得到最大值,所以输出应该是这样的: row 3 has a max of 7 row 5 has a max of 4 row 8 has a max of 8 我在想一个做这种事的人 count = 0 count1 = 3 for vals in df[B]: max = max(vals.

问题是我有以下数据库:

A B
1 5
2 6 
3 7
4 1
5 4
6 3
7 5 
8 8 
9 5
假设此数据帧的名称为df

所以我想让代码,在这种情况下,每3行,我的情况13得到最大值,所以输出应该是这样的:

row 3 has a max of 7 
row 5 has a max of 4 
row 8 has a max of 8 
我在想一个做这种事的人

count = 0
count1 = 3
for vals in df[B]:
    max = max(vals.iloc[count:count1])
    count = count + 3
    count1 = count1 + 3
    print(max)
但这样做会得到AttributeError:“float”对象没有属性“iloc”


因此,欢迎您提出任何想法。谢谢您

您只需执行以下操作,即可将您的列表分成3个部分

a = [[a[i], a[i+1], a[i+2]] for i in range(0, len(a), 3)]
其中a是包含B列值的列表。输出:

[[5, 6, 7], [1, 4, 3], [5, 8, 5]]
然后,找到每个块的最大值,并显示相应的索引。使用循环,可以遍历列表,找到值的索引,并打印其索引

slice = 0
for i in range(len(a)):
    "row {} has a max of {} ".format(slice + a[i].index(max(a[i])), max(a[i]))
    slice = slice + 3
在自定义groupID和idxmax和loc上使用groupby。使用n作为要分组的行数

n = 3
df_out = df.loc[df.groupby(np.arange(len(df)) // n).B.idxmax()]

Out[1201]:
   A  B
2  3  7
4  5  4
7  8  8

你能解释一下你所说的马克斯罗是什么意思吗?因此,如果第0行和B列中的值为20,则第3行的最大值为20或7?如果理解正确,则为是,每三行的最大值是多少