对于相同类型的项目,如何在列中保留具有最大值的行?

Tho*_*ale 5 python dataframe pandas

我有下表:

Item number | crit_A | crit_B|
------------|--------|-------|
     1      |  100   |  20   |
     1      |   10   | 100   |
     1      |   50   |  50   |
     2      |   10   | 100   |
     2      |   90   |  10   |
     2      |   90   |  10   |
Run Code Online (Sandbox Code Playgroud)

我想要一个熊猫数据框操作只返回第一行和第五行。这对应于给定项目的 crit_A 为最大值的行。

Item number | crit_A | crit_B|
------------|--------|-------|
     1      |  100   |  20   |
     2      |   90   |  10   |
Run Code Online (Sandbox Code Playgroud)

注意:当 crit_A 对给定项目有多个相等的值时,我只需要返回一个项目。

以下不是我要找的:

res_82_df.groupby(['Item number']).max()
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它会按项目编号分组但返回所有列的最大值。另请注意:我可以查找任意阈值并执行查询语句。但这种方法也不够稳健,因为我总是需要查看数据并做出价值判断。

我如何有效地完成这项工作?

注意:我的问题确实是上面链接的问题的重复。不过,这里的答案非常独特且简洁得多,并且按照我的要求执行。

Max*_*axU 7

我会这样做:

In [107]: df.loc[df.groupby('Item number')['crit_A'].idxmax()]
Out[107]:
   Item number  crit_A  crit_B
0            1     100      20
4            2      90      10
Run Code Online (Sandbox Code Playgroud)