我有一个采用这种形式的数据框。
Type Major GPA
F A 2.6
T B 3.4
T C 2.9
F A 1.8
T B 2.8
F C 3.5
...
我想按 Type
和 Major
对 Dataframe(“students”)进行分组,计算每个分组的行数,然后从多到少排序每种类型的热门专业,最后创建一个包含 20 个最受欢迎专业的新数据框。
我希望输出看起来像这样:
F
A 21
B 19
C 15
...
T
A 14
B 7
C 3
这是我做的:
most_popular = students.groupby(['Type', 'Major']).size().sort_values(ascending=False)[:20]
但这样做是对两种类型进行排序 - 而不是分别对每种类型进行排序。
感谢您的帮助。
最佳答案
most_popular = students.groupby(['Type', 'Major']).size().reset_index().sort_values(['Type', 'Major'], ascending=[True, False])[:20]
关键是要同时按ASC和DSC顺序排序,可以使用:
.sort_values(['Type', 'Major'], ascending=[True, False])
关于python - 对按多列分组的数据框中的值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36877811/