我想做与 this question 几乎相同的事情.
但是,根据我的数据集,@jezrael 接受的答案中的方法花费的时间太长了——我在原始数据框中有大约 30 万行,运行 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
使用 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
关于python - Pandas:对于 groupby value_counts,返回具有最大计数的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51200718/