潘达斯过滤器最大组别

问题描述 投票:0回答:1

我有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个回答
3
投票

我们可以这样做。

(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

1
投票

使用 head 之后 sort_values

df.sort_values(['family','fruits'], ascending=[True,False]).groupby('family').head(1)
© www.soinside.com 2019 - 2024. All rights reserved.