我想做的事情与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)的情况下,我想从返回的表中排除那个最大值。
答案 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