Gibt es eine Möglichkeit, Spalten im Pandas-Datenrahmen basierend auf meinen persönlichen Vorlieben neu anzuordnen (dh nicht alphabetisch oder numerisch sortiert, sondern eher nach bestimmten Konventionen)?
Einfaches Beispiel:
frame = pd.DataFrame({
'one thing':[1,2,3,4],
'second thing':[0.1,0.2,1,2],
'other thing':['a','e','i','o']})
produziert dies:
one thing other thing second thing
0 1 a 0.1
1 2 e 0.2
2 3 i 1.0
3 4 o 2.0
Aber stattdessen möchte ich Folgendes:
one thing second thing other thing
0 1 0.1 a
1 2 0.2 e
2 3 1.0 i
3 4 2.0 o
(Bitte geben Sie eine generische Lösung an, anstatt spezifisch für diesen Fall. Vielen Dank.)
Sie können dies verwenden:
quelle
pandas
.pandas
zuzuweisen. Dadurch wird die Spaltenreihenfolge nicht direkt geändert (zumindest nicht in Version 0.23`).Hier ist eine Lösung, die ich sehr oft benutze. Wenn Sie einen großen Datensatz mit Tonnen von Spalten haben, möchten Sie definitiv nicht alle Spalten manuell neu anordnen.
Was Sie tun können und höchstwahrscheinlich möchten, ist, nur die ersten paar Spalten zu bestellen, die Sie häufig verwenden, und alle anderen Spalten nur sich selbst sein zu lassen. Dies ist ein gängiger Ansatz in R.
df %>%select(one, two, three, everything())
Sie können also zuerst die Spalten, die Sie bestellen möchten, manuell eingeben und vor allen anderen Spalten in einer Liste positionieren
cols_to_order
.Anschließend erstellen Sie eine Liste für neue Spalten, indem Sie den Rest der Spalten kombinieren:
Danach können Sie die
new_columns
als andere vorgeschlagene Lösung verwenden.quelle
Sie könnten auch so etwas tun
df = df[['x', 'y', 'a', 'b']]
Sie können die Liste der Spalten auch abrufen mit:
Die Ausgabe erzeugt ungefähr Folgendes:
Welches ist dann einfach manuell neu anzuordnen.
quelle
Konstruieren Sie es mit einer Liste anstelle eines Wörterbuchs
quelle
Sie können auch OrderedDict verwenden:
quelle
Fügen Sie den Parameter 'Spalten' hinzu:
quelle
Versuchen Sie die Indizierung (Sie möchten also nicht nur eine generische Lösung, sondern auch die Indexreihenfolge genau so, wie Sie es möchten):
Jetzt:
Ist:
quelle
Ich finde das am einfachsten und funktionierendsten:
quelle