Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对数据帧中按多列分组的值进行排序_Python_Sorting_Pandas_Group By - Fatal编程技术网

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])