Benutzerdefinierte Sortierung in Pandas-Datenrahmen
In Pandas müssen Sie manchmal einen Datenrahmen basierend auf einer benutzerdefinierten Reihenfolge sortieren. Dies kann mithilfe eines Wörterbuchs erreicht werden, um die gewünschte Sortierreihenfolge zu definieren.
Problem:
Sie haben einen Pandas-Datenrahmen mit einer Spalte, die Monatsnamen enthält. Sie möchten diese Spalte mithilfe eines benutzerdefinierten Wörterbuchs sortieren, z. B.:
custom_dict = {'March':0, 'April':1, 'Dec':3}
Lösung:
Verwendung kategorialer Reihen:
Pandas 0.15 führte die Categorical Series ein, die eine elegante Möglichkeit bietet, damit umzugehen Szenario:
Konvertieren Sie die Monatsspalte in eine kategoriale Reihe und geben Sie die benutzerdefinierte Reihenfolge an:
df['m'] = pd.Categorical(df['m'], ["March", "April", "Dec"])
Sortieren Sie den Datenrahmen basierend auf der Kategorie Spalte:
df.sort_values("m")
Verwenden eines Zwischenreihe:
Vor Pandas 0.15 konnten Sie eine Zwischenreihe verwenden, um eine benutzerdefinierte Sortierung zu erreichen:
Wenden Sie das benutzerdefinierte Wörterbuch auf die Monatsspalte an:
s = df['m'].apply(lambda x: {'March':0, 'April':1, 'Dec':3}[x])
Sortieren Sie den Vermittler Serie:
s.sort_values()
Setzen Sie den Index des Datenrahmens auf die sortierte Zwischenreihe und sortieren Sie:
df.set_index(s.index).sort()
Verwenden die Ersetzungsmethode:
In neueren Versionen von Pandas bietet Series eine Ersetzungsmethode, die eine prägnantere Darstellung ermöglicht Lösung:
df['m'].replace({'March':0, 'April':1, 'Dec':3})
Diese Methode ersetzt die Monatswerte durch die entsprechenden im Wörterbuch angegebenen Sortierwerte. Durch Sortieren des Datenrahmens basierend auf der geänderten Monatsspalte wird die gewünschte benutzerdefinierte Reihenfolge erreicht.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Pandas-DataFrame-Spalte basierend auf einem Wörterbuch individuell sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!