python - 如何在 Pandas Dataframe 中对两列进行分组并获取值计数后获取最高值行?
问题描述
我使用以下代码行按两列分组:
df.groupby('topic')['category'].value_counts()
我得到以下输出:
topic category
topic1 Entertainment 1303
Science 462
Sports 351
Economy 270
Business 161
Technology 92
Education 40
Politics 18
Environment 5
topic2 Politics 134
Economy 133
Entertainment 110
Sports 69
Business 68
Science 45
Technology 22
Education 7
Environment 2
topic3 Entertainment 1370
Sports 533
Economy 485
Science 335
Business 207
Politics 180
Education 108
Technology 97
Environment 12
我想获得每个主题(这是最常见的类别)的最上面一行,如下所示:
topic category
topic1 Entertainment 1303
topic2 Politics 134
topic3 Entertainment 1370
解决方案
在 pandas 中,value_counts
将按降序对值进行排序,因此您需要做的就是从每个组中获取最高值并将其返回。这可以通过应用一个函数轻松完成:
def top_value_count(x):
return x.value_counts().head(1)
df.groupby('topic')['category'].apply(top_value_count)
将 更改1
为另一个数字以返回每个主题的更多值。
推荐阅读
- c++ - 删除 Netbeans 中的标准运行参数
- jquery - 有没有办法在没有任何第三方插件的情况下让引导自动完成文本字段?
- vbscript - Visual Basic 比较文件任务
- bash - 查看多个 git 仓库的日志
- sql-server - SQL Server: Why is the backup speed so slow?
- javascript - 如何使 DIV 元素默认关闭?
- matrix - 使用 2D 矩阵和自定义 tic 绘制单元格边框
- javascript - jQuery可排序序列化无法识别动态添加的内容
- java - 如果不是以下代码组合,那么如何使其组合?
- python - 用于情感分析的 Python VADER 词典结构