[英]Pandas: for groupby value_counts, return the row(s) with the maximum count
我想做与此问题几乎相同的事情。
但是,根据我的数据集,@ 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)的情况下,我想从返回的表中排除该最大值。
我想你想要这样的东西。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.