我有熊猫df:
family age fruits
------------------
Brown 12 7
Brown 33 5
Yellow 28 3
Yellow 11 9
我想在下一个条件下获得年龄:
- 按家庭分组;
- 拥有最多的水果
所以结果 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)