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

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


当前回答

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()相同。

其他回答

考虑这个数据框架

[In]: df = pd.DataFrame(np.random.randn(4,3),columns=['A','B','C'])
[Out]:
          A         B         C
0 -0.253233  0.226313  1.223688
1  0.472606  1.017674  1.520032
2  1.454875  1.066637  0.381890
3 -0.054181  0.234305 -0.557915

假设一个人想知道列“C”最大的行,下面的工作将完成

[In]: df[df['C']==df['C'].max()])
[Out]:
          A         B         C
1  0.472606  1.017674  1.520032

你也可以试试idxmax:

In [5]: df = pandas.DataFrame(np.random.randn(10,3),columns=['A','B','C'])

In [6]: df
Out[6]: 
          A         B         C
0  2.001289  0.482561  1.579985
1 -0.991646 -0.387835  1.320236
2  0.143826 -1.096889  1.486508
3 -0.193056 -0.499020  1.536540
4 -2.083647 -3.074591  0.175772
5 -0.186138 -1.949731  0.287432
6 -0.480790 -1.771560 -0.930234
7  0.227383 -0.278253  2.102004
8 -0.002592  1.434192 -1.624915
9  0.404911 -2.167599 -0.452900

In [7]: df.idxmax()
Out[7]: 
A    0
B    8
C    7

e.g.

In [8]: df.loc[df['A'].idxmax()]
Out[8]: 
A    2.001289
B    0.482561
C    1.579985

Use:

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

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

直接的“.argmax()”解决方案不适合我。

前面的例子由@ely提供

>>> import pandas
>>> import numpy as np
>>> df = pandas.DataFrame(np.random.randn(5,3),columns=['A','B','C'])
>>> df
      A         B         C
0  1.232853 -1.979459 -0.573626
1  0.140767  0.394940  1.068890
2  0.742023  1.343977 -0.579745
3  2.125299 -0.649328 -0.211692
4 -0.187253  1.908618 -1.862934
>>> df['A'].argmax()
3
>>> df['B'].argmax()
4
>>> df['C'].argmax()
1

返回以下消息:

FutureWarning: 'argmax' is deprecated, use 'idxmax' instead. The behavior of 'argmax' 
will be corrected to return the positional maximum in the future.
Use 'series.values.argmax' to get the position of the maximum now.

所以我的解是:

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

如果你想要整行而不仅仅是id,你可以使用df。nbiggest和传递你想要多少“top”行,你也可以传递你想要它的列/列。

df.nlargest(2,['A'])

会给出A的前两个值对应的行。

使用df。最小值为nminimal。