Pandas DataFrame.unstack () Ändert die Reihenfolge der Zeilen- und Spaltenüberschriften

8

Ich habe das folgende Problem beim Sortieren der Zeilen- und Spaltenüberschriften festgestellt.

So wird das reproduziert:

%Vor%

Dies zeigt:

%Vor%

Beachten Sie, dass die Header nicht mehr sortiert sind. Ich frage mich, was ist ein guter Weg, um dieses Problem zu lösen, um interaktive Arbeit einfach zu machen.

Um herauszufinden, wo das Problem liegt, führen Sie Folgendes aus:

%Vor%

Es gibt mir das:      Index ([(- 0,567, 0,0321], (0,0321, 0,724), (0,724, 3,478], [-2,58, -0,567]], dtype = Objekt)

Vergleichen Sie das nun mit B.levels:

%Vor%

Offensichtlich ist die ursprüngliche Reihenfolge in Factor verloren.

Um die Sache noch schlimmer zu machen, machen wir eine mehrstufige Kreuztabelle:

%Vor%

Es zeigt etwas wie:

%Vor%

Die Zeilen- und Spaltenbeschriftungen wurden falsch sortiert.

Danke.

    
Tom Bennett 17.06.2013, 20:54
quelle

1 Antwort

7

Das scheint ein bisschen wie ein Hack zu sein, aber hier geht es:

%Vor%

Die Tatsache nutzen, dass unique Ordnung erhält * (Ergreift die einzigartigen ersten Begriffe aus dem Index von g):

%Vor%

Wie Sie sehen können, sind diese in der richtigen Reihenfolge.

Jetzt können Sie reindex damit:

%Vor%

Welches ist jetzt in der richtigen Reihenfolge.

Update (Ich habe übersehen, dass die Spalten auch nicht in Ordnung waren).
Sie können den gleichen Trick für die Spalten verwenden (Sie müssen diese Operationen verketten):

%Vor%

* Dies ist der Grund dafür, dass Series unique wesentlich schneller ist als np.unique .

    
Andy Hayden 17.06.2013, 21:23
quelle

Tags und Links