2016-04-26 60 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

相關問題