【问题标题】: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
我想得到具有下一个条件的年龄:
- 按家庭分组;
- 拥有最多的水果
所以结果 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)