python - Pandas:对于 groupby value_counts,返回具有最大计数的行

标签 python pandas

我想做与 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/

相关文章:

python - pandas dataframe groupby 并填充第一行值

python - 如何在 Pandas 数据框中的所有列中广播和分配一系列值?

python - Mac 上适用于 Python 3.2 的 Pygame - 导入错误

python - 如何通过 Plone 中的完整路径检查文件夹是否存在?

python - 在 Windows 上安装 Python pip SyntaxError : EOF while scanning triple-quoted string literal

python - google colaboratory 中的实时协作

python - Pandas 从具有名称列表的列中获取最常见的名称

python - 在 panda DataFrame 列中获取上个月的第一个工作日

python - 使用 pandas 在 CSV 文件中写入注释

python - 用于 pickle 函数结果的输入/输出装饰器