2016-04-26 15 views
1

Ich habe ein Datenformat, das in dieser Form ist.Sortieren von Daten in Datenrahmen gruppiert nach mehreren Spalten

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

würde ich zu einer Gruppe wie die Datenrahmen („Studenten“) von Type und Major, die Anzahl der Zeilen für jede Gruppierung zählen, dann Art, die aus bis zu später beliebten Majors für jeden Typ, und schließlich Erstellen Sie einen neuen Datenrahmen, der die 20 beliebtesten Majors enthält.

ich die Ausgabe möchte wie folgt aussehen:

F 
A 21 
B 19 
C 15 
... 
T 
A 14 
B 7 
C 3 

Das ist, was ich tat:

most_popular = students.groupby(['Type', 'Major']).size().sort_values(ascending=False)[:20] 

Aber was dies tut, ist Art über beiden Typen - eher als Art separat für jeder.

Vielen Dank für Ihre Hilfe.

Antwort

0

Die Ergebnisse werden automatisch als Standardargument sortiert. Ist das die gewünschte Ausgabe?

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

Leider nicht. Es sortiert die Ergebnisse nach Major - alphabetisch sortiert statt nach GPA. –

+0

@JamesEaves Siehe oben Bearbeiten. – Alexander

Verwandte Themen