熊猫:对于groupby value_counts,返回具有最大计数的行

时间:2018-07-05 22:31:22

标签: python pandas

我想做的事情与this question差不多。

但是,根据我的数据集,@ jezrael接受的答案中的方法花费的时间太长-我在原始数据帧中有约30万行,并且运行nlargest(1)命令需要几分钟。此外,我在head(1000)有限的数据帧上进行了尝试,并且在value_count内的每一行都没有得到只有一行-我获得了与value_counts完全相同的系列。

用我自己的话:基本上,我的数据集有两列,如下所示:

Session Rating
A       Positive
A       Positive
A       Positive
A       Negative
B       Negative
B       Negative
C       Positive
C       Negative

使用counts = df.groupby('Session')['Rating']。value_counts()我得到了一个这样的Series对象:

Session Rating
A       Positive  3
        Negative  1
B       Negative  2
C       Positive  1
        Negative  1

如何获取仅包含最大数量的评分的数据框?并且在有多个最大值(例如C)的情况下,我想从返回的表中排除那个最大值。

1 个答案:

答案 0 :(得分:0)

我想你想要这样的东西。

df.groupby('Session')['Rating'].apply(lambda x: x.value_counts().head(1))

输出:

Session          
A        Positive    3
B        Negative    2
C        Negative    1
Name: Rating, dtype: int64