Ich möchte meinen Datenrahmen nach zwei Spalten gruppieren und dann die aggregierten Ergebnisse innerhalb der Gruppen sortieren.
In [167]:
df
Out[167]:
count job source
0 2 sales A
1 4 sales B
2 6 sales C
3 3 sales D
4 7 sales E
5 5 market A
6 3 market B
7 2 market C
8 4 market D
9 1 market E
In [168]:
df.groupby(['job','source']).agg({'count':sum})
Out[168]:
count
job source
market A 5
B 3
C 2
D 4
E 1
sales A 2
B 4
C 6
D 3
E 7
Ich möchte jetzt die Zählspalte in absteigender Reihenfolge innerhalb jeder der Gruppen sortieren. Und dann nimm nur die obersten drei Reihen. Um so etwas zu bekommen wie:
count
job source
market A 5
D 4
B 3
sales E 7
C 6
B 4
order
ist veraltete Verwendungsort_values
stattdessenSie können es auch einfach auf einmal tun, indem Sie zuerst die Sortierung durchführen und mit head die ersten 3 jeder Gruppe nehmen.
quelle
groupby
gewährleistet , dass der Auftrag erhalten bleibt?Hier ist ein weiteres Beispiel für die Auswahl der Top 3 in sortierter Reihenfolge und die Sortierung innerhalb der Gruppen:
quelle
Versuchen Sie dies stattdessen
einfache Möglichkeit, 'groupby' zu machen und in absteigender Reihenfolge zu sortieren
quelle
Wenn Sie keine Spalte summieren müssen, verwenden Sie die Antwort von @ tvashtar. Wenn Sie summieren müssen, können Sie die Antwort von @joris oder diese Antwort verwenden, die dieser sehr ähnlich ist.
quelle