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