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

Python 熊猫:对于groupby value_计数,返回具有最大计数的行,python,pandas,Python,Pandas,我想做几乎和你一样的事情 然而,基于我的数据集,@jezrael接受的答案中的方法花费的时间太长了——我在原始数据帧中有大约300k行,运行nlargest(1)命令需要几分钟。此外,我在一个head(1000)有限的数据帧上进行了尝试,在value_count中,每一行并没有得到1行——我得到了与value_counts完全相同的序列 用我自己的话说:基本上,我的数据集有两列,如下所示: Session Rating A Positive A Positive A

我想做几乎和你一样的事情

然而,基于我的数据集,@jezrael接受的答案中的方法花费的时间太长了——我在原始数据帧中有大约300k行,运行nlargest(1)命令需要几分钟。此外,我在一个head(1000)有限的数据帧上进行了尝试,在value_count中,每一行并没有得到1行——我得到了与value_counts完全相同的序列

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

Session Rating
A       Positive
A       Positive
A       Positive
A       Negative
B       Negative
B       Negative
C       Positive
C       Negative
Session Rating
A       Positive  3
        Negative  1
B       Negative  2
C       Positive  1
        Negative  1
使用counts=df.groupby('Session')['Rating'].value_counts()我得到一个如下的序列对象:

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

如何获得仅包含最大计数的评级的数据帧?如果有多个最大值(如C),我想从返回的表中排除该最大值。

我想您需要这样的值

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

检查他的方法是否更快(这里的numpy会比pandas更好)@0709我在他生成的同一个数据集上尝试了公认的答案,但结果不一样——出于某种原因,形状等于k。一定有其他方法不使用apply?我在100万行上遇到了同样的挑战…@Xavierboretsicotte尝试一下
df.groupby('Session')['Rating'].value\u counts().groupby(level=0)。head(1)