对按多个列分组的数据帧中的值进行排序
问题描述:
我有一个这种形式的数据框。对按多个列分组的数据帧中的值进行排序
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
,计算行数为每个分组,然后进行排序,从最多到最少热门的专业为每种类型的,最后,创建一个包含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]
但这样做是那种在两个类型 - 而不是单独排序为每。
谢谢你的帮助。
答
结果会自动排序为默认参数。这是期望的输出吗?
>>> df.groupby(['Type', 'Major'], as_index=False).GPA.count().sort_values(['Major', 'GPA'])
Type Major GPA
0 F A 2
2 T B 2
1 F C 1
3 T C 1
不幸的是没有。它按照主要字母顺序排列结果,而不是按照GPA排序。 –
@JamesEaves查看上面的修改。 – Alexander