我使用以下代码行按两列分组:
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
更改为另一个数字,以便为每个主题返回更多值。
关于python - 如何在对两列进行分组并在 Pandas Dataframe 中获取值计数后获取最高值行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50447230/