【问题标题】:How do I just keep the rows with the maximum value in a column for items of the same type? [duplicate]如何将具有最大值的行保留在同一类型项目的列中? [复制]
【发布时间】:2017-10-09 12:57:06
【问题描述】:

我有下表:

Item number | crit_A | crit_B|
------------|--------|-------|
     1      |  100   |  20   |
     1      |   10   | 100   |
     1      |   50   |  50   |
     2      |   10   | 100   |
     2      |   90   |  10   |
     2      |   90   |  10   |

我希望 pandas 数据框操作只返回第一行和第五行。这对应于给定项目的 crit_A 最大的行。

Item number | crit_A | crit_B|
------------|--------|-------|
     1      |  100   |  20   |
     2      |   90   |  10   |

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

以下不是我要找的:

res_82_df.groupby(['Item number']).max()

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

我如何有效地做到这一点?

注意:我的问题确实与上面链接的问题重复。虽然这里的答案非常独特,而且更加简洁,并且按照我的要求去做。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    我会这样做:

    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
    

    【讨论】:

      猜你喜欢
      • 2021-07-13
      • 2018-12-29
      • 2016-07-26
      • 2014-03-29
      • 2017-12-27
      • 1970-01-01
      • 2012-09-30
      • 2017-06-09
      • 2021-04-29
      相关资源
      最近更新 更多