首页 > 解决方案 > 从 groupby 中选择具有最高值的行

问题描述

我有一个数据框,其中包含一些有关用户的信息。有一个用户列、类型列和计数列,如下所示:

name         type     count
robert       x        123
robert       y        456
robert       z        5123
charlie      x        442123
charlie      y        0 
charlie      z        42

我试图找出每个名称的计数最高的类型,所以对于这种情况,我想选择这个:

name         type    count
robert       z       5123
charlie      x       442123

我知道我可以做这样的事情来获得每个名称的最大计数,但我不确定如何包含“类型”列,这实际上是最重要的

df.sort_values('count', ascending=False).drop_duplicates('name').sort_index()

任何帮助是极大的赞赏!

标签: pythonpandas

解决方案


试试这个

df.loc[df.groupby('name')['count'].idxmax()]['type']

      name type   count
3  charlie    x  442123
2   robert    z    5123

如果您不仅想要一个最大值,还想要n每组的最高值(例如n = 2

df.loc[df.groupby('name')['count'].nlargest(2).index.get_level_values(1)]

      name type   count
3  charlie    x  442123
5  charlie    z      42
2   robert    z    5123
1   robert    y     456

推荐阅读