2016-04-26 61 views
1

我有一个这种形式的数据框。对按多个列分组的数据帧中的值进行排序

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 
... 

我想组数据帧(“学生”)由TypeMajor,计算行数为每个分组,然后进行排序,从最多到最少热门的专业为每种类型的,最后,创建一个包含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] 

但这样做是那种在两个类型 - 而不是单独排序为每。

谢谢你的帮助。

回答

0

结果会自动排序为默认参数。这是期望的输出吗?

>>> 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 
+0

不幸的是没有。它按照主要字母顺序排列结果,而不是按照GPA排序。 –

+0

@JamesEaves查看上面的修改。 – Alexander

相关问题