首页 > 解决方案 > 获取 Pandas Groupby 对象的最大数量

问题描述

这一行:

gf = df.groupby(['weakness','type']).size()

给出以下输出:

weakness  type    

fighting  normal       6
fire      bug          1
          flying       1
          grass       11
flying    fighting     3
grass     rock         1
          water        1
ground    electric     1
poison    fairy        3
rock      fire         1
water     fire         9
          ground       4
          rock         4
dtype: int64

但是如何只获得某个“弱点”的最大“类型”,如下所示。对于具有相同值的计数,将考虑字母顺序。

weakness type count

fighting normal   6
fire     grass    11
flying   fighting 3
grass    rock     1 ......etc

我试过的

首先,我尝试通过以下方式将 groupobject 转换为数据框:

gdf = gf.groupby(['weakness','type']).size().reset_index(name='count')

然后我尝试了:

gdf.groupby(["weakness","type"]).count().sort_values("count").groupby(level=0).tail(1)

这也没有给出正确的输出。任何帮助将不胜感激。

标签: pythonpandasdataframepandas-groupby

解决方案


您可以按计数对数据帧进行排序,然后删除任何重复项,这将保留每个weakness.

df.sort_values('count', ascending=False).drop_duplicates(['weakness'])

要确保类型按字母顺序排列,您也可以添加type到排序中:

df.sort_values(['count', 'type'], ascending=[False, True]).drop_duplicates(['weakness'])

结果:

    weakness      type  count
3       fire     grass     11
10     water      fire      9
0   fighting    normal      6
8     poison     fairy      3
4     flying  fighting      3
7     ground  electric      1
9       rock      fire      1
5      grass      rock      1

推荐阅读