wake-up-neo.com

Multi-Index-Sortierung in Pandas

Ich habe ein Dataset mit Multi-Index-Spalten in a pandas df, das ich nach Werten in einer bestimmten Spalte sortieren möchte. Ich habe versucht, sortindex und sortlevel zu verwenden, konnte aber nicht die Ergebnisse, die ich suche. Mein Datensatz sieht folgendermaßen aus:

    Group1    Group2
    A B C     A B C
1   1 0 3     2 5 7
2   5 6 9     1 0 0
3   7 0 2     0 3 5 

Ich möchte alle Daten und den Index nach Spalte C in Gruppe 1 in absteigender Reihenfolge sortieren, damit meine Ergebnisse wie folgt aussehen:

    Group1    Group2
    A B C     A B C
 2  5 6 9     1 0 0
 1  1 0 3     2 5 7
 3  7 0 2     0 3 5 

Ist es möglich, diese Sortierung mit der Struktur durchzuführen, in der sich meine Daten befinden, oder sollte ich Group1 auf die Indexseite tauschen?

73
MattB

Wenn Sie nach einem MultiIndex sortieren, müssen Sie das Tupel enthalten, das die Spalte in einer Liste beschreibt *:

In [11]: df.sort_values([('Group1', 'C')], ascending=False)
Out[11]: 
  Group1       Group2      
       A  B  C      A  B  C
2      5  6  9      1  0  0
1      1  0  3      2  5  7
3      7  0  2      0  3  5

* , um nicht zu verwechseln pandas), dass Sie zuerst nach Gruppe1 und dann nach C sortieren möchten.


Hinweis: Ursprünglich verwendet .sort da veraltet, dann in 0,20 entfernt, zugunsten von .sort_values .

104
Andy Hayden