Python 对数据帧中按多列分组的值进行排序
我有一个这样的数据框Python 对数据帧中按多列分组的值进行排序,python,sorting,pandas,group-by,Python,Sorting,Pandas,Group By,我有一个这样的数据框 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 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
...
我想按类型和专业对数据框(“学生”)进行分组,计算每个分组的行数,然后对每种类型的最流行专业从最流行的专业到最不流行的专业进行排序,最后创建一个新的数据框,其中包括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
关键是按ASC和DSC顺序进行排序,您可以使用:
.sort_values(['Type', 'Major'], ascending=[True, False])
不幸的是,没有。它是按主要字母顺序而不是GPA来排序结果的。
.sort_values(['Type', 'Major'], ascending=[True, False])