python - pandas 排序值以获得 groupby 中每一列的前 5 名

标签 python pandas group-by

我有一个包含城市、姓名和成员的数据框。我需要根据每个城市的最高成员(“成员”)计数找到前 5 个组(名称)。

这是我使用时得到的:

clust.groupby(['city','name']).agg({'members':sum})

成员 城市名 巴斯 AWS 巴斯用户组 346 雅居乐 Bath & Bristol 957 巴斯加密聊天 47 巴斯 JS 142 Bath 机器学习聚会 435 贝尔法斯特第四次工业革命挑战赛 609 贝尔法斯特 Adob​​e 聚会 66 贝尔法斯特 Azure 聚会 205 南安普顿加密货币交易 SouthCoast 50 南安普顿比特币和山寨币聚会 50 南安普顿函数式编程聚会 28 南安普顿虚拟现实聚会 248 桑德兰桑德兰数字 287

我需要前 5 名,但正如您所看到的,成员数量似乎没有排序,即 346 在 957 之前等。

我也尝试过预先对值进行排序并执行以下操作:

clust.sort_values(['city', 'name'], axis=0).groupby('city').head(5)

但这会返回一个类似的系列。

我也用过这个 clust.groupby(['city', 'name']).head(5)

但它给了我所有的行,而不是前 5 行。它也不是结构化的,所以不是按字母顺序排列的。

请帮忙。谢谢

最佳答案

我认为需要将 ascending=[True, False] 添加到 sort_values并将列更改为 members 以进行排序:

clust = clust.groupby(['city','name'], as_index=False)['members'].sum()
df = clust.sort_values(['city', 'members'], ascending=[True, False]).groupby('city').head(5)
print (df)

           city                                 name  members
1          Bath                 Agile Bath & Bristol      957
4          Bath              Machine Learning Meetup      435
0          Bath                  AWS Bath User Group      346
3          Bath                                   JS      142
2          Bath                          Crypto Chat       47
5       Belfast  4th Industrial Revolution Challenge      609
7       Belfast                         Azure Meetup      205
6       Belfast                         Adobe Meetup       66
11  Southampton               Virtual Reality Meetup      248
8   Southampton   Crypto Currency Trading SouthCoast       50
9   Southampton           Bitcoin and Altcoin Meetup       50
10  Southampton        Functional Programming Meetup       28
12   Sunderland                   Sunderland Digital      287

关于python - pandas 排序值以获得 groupby 中每一列的前 5 名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49632059/

相关文章:

php - MYSQL - 选择历史最高分

python - interpreter.get_input_details() 中的 'quantization' 是什么意思?

python - Wagtail:添加对其他图像文件格式的支持

python - Python中有类型收集工具吗?

python - Pandas 数据框 : ValueError: num must be 1 <= num <= 0, 不是 1

python - Pandas :减去两个日期列,结果是一个整数

python - 如何在特定日期开始时间组pandas

python - Django 模型分组依据

c# - Linq groupby 和 sum

python - 有效地将多个 zlib 压缩数据流连接成一个流