Pandas 过滤最大分组依据

Pandas filter maximum groupby

我有 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

我们可以做到:

(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

sort_values

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