我如何才能找到某一列的值是最大的行?

df.max()会给我每一列的最大值,我不知道如何得到相应的行。


当前回答

如果有多行取最大值,上述两个答案都只返回一个索引。如果你想要所有的行,似乎没有一个函数。 但这并不难做到。下面是一个Series的例子;DataFrame也可以这样做:

In [1]: from pandas import Series, DataFrame

In [2]: s=Series([2,4,4,3],index=['a','b','c','d'])

In [3]: s.idxmax()
Out[3]: 'b'

In [4]: s[s==s.max()]
Out[4]: 
b    4
c    4
dtype: int64

其他回答

非常简单:我们有如下所示的df,我们想在C中打印一行max值:

A  B  C
x  1  4
y  2  10
z  5  9

In:

df.loc[df['C'] == df['C'].max()]   # condition check

Out:

A B C
y 2 10

Use:

data.iloc[data['A'].idxmax()]

data['A'].idxmax() -根据行查找最大值位置 Data.iloc() -返回行

mx.iloc[0].idxmax()

这一行代码将告诉你如何从dataframe中的一行中找到最大值,这里mx是dataframe, iloc[0]表示第0个索引。

如果有多行取最大值,上述两个答案都只返回一个索引。如果你想要所有的行,似乎没有一个函数。 但这并不难做到。下面是一个Series的例子;DataFrame也可以这样做:

In [1]: from pandas import Series, DataFrame

In [2]: s=Series([2,4,4,3],index=['a','b','c','d'])

In [3]: s.idxmax()
Out[3]: 'b'

In [4]: s[s==s.max()]
Out[4]: 
b    4
c    4
dtype: int64

DataFrame的idmax返回具有最大值的行的标签索引,argmax的行为取决于pandas的版本(现在它返回一个警告)。如果您想使用位置索引,您可以执行以下操作:

max_row = df['A'].values.argmax()

or

import numpy as np
max_row = np.argmax(df['A'].values)

请注意,如果使用np.argmax(df['A']),其行为与df['A'].argmax()相同。