【问题标题】:Pandas filter maximum groupbyPandas 过滤最大分组方式
【发布时间】:2020-06-07 14:18:04
【问题描述】:

我有 Pandas df:

family  age fruits
------------------
Brown   12  7
Brown   33  5
Yellow  28  3
Yellow  11  9

我想得到具有下一个条件的年龄:

  1. 按家庭分组;
  2. 拥有最多的水果

所以结果 df 将是:

family  age
-----------
Brown   12
Yellow  11

【问题讨论】:

    标签: pandas dataframe filter minimax


    【解决方案1】:

    我们可以做到:

    (df.sort_values(['family','fruits'], ascending=[True,False])
       .drop_duplicates('family')
    )
    

    输出:

       family  age  fruits
    0   Brown   12       7
    3  Yellow   11       9
    

    groupby().idxmax()

    df.loc[df.groupby('family').fruits.idxmax(), ['family','age'] ]
    

    输出:

       family  age
    0   Brown   12
    3  Yellow   11
    

    【讨论】:

      【解决方案2】:

      sort_values之后使用head

      df.sort_values(['family','fruits'], ascending=[True,False]).groupby('family').head(1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 2017-01-27
        • 2017-07-03
        • 2021-02-19
        • 2012-10-21
        • 2021-06-21
        • 1970-01-01
        相关资源
        最近更新 更多