gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:43 24 4
gpt4 key购买 nike

我有一个包含城市、姓名和成员的数据框。我需要根据每个城市的最高成员(“成员”)计数找到前 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com