Ich habe einen DataFrame mit Pandas und Spaltenbeschriftungen, die ich bearbeiten muss, um die ursprünglichen Spaltenbeschriftungen zu ersetzen.
Ich möchte die Spaltennamen in einem DataFrame "A" ändern, wo die ursprünglichen Spaltennamen sind:
['$a', '$b', '$c', '$d', '$e']
in
['a', 'b', 'c', 'd', 'e'].
Ich habe die bearbeiteten Spaltennamen in einer Liste gespeichert, aber ich weiß nicht, wie ich die Spaltennamen ersetzen kann.
Verwenden Sie die Funktion df.rename()
und geben Sie die Spalten an, die umbenannt werden sollen. Es müssen nicht alle Spalten umbenannt werden:
df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'})
# Or rename the existing DataFrame (rather than creating a copy)
df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'}, inplace=True)
Minimal Code Beispiel
df = pd.DataFrame('x', index=range(3), columns=list('abcde'))
df
a b c d e
0 x x x x x
1 x x x x x
2 x x x x x
Die folgenden Methoden funktionieren alle und erzeugen die gleiche Ausgabe:
df2 = df.rename({'a': 'X', 'b': 'Y'}, axis=1) # new method
df2 = df.rename({'a': 'X', 'b': 'Y'}, axis='columns')
df2 = df.rename(columns={'a': 'X', 'b': 'Y'}) # old method
df2
X Y c d e
0 x x x x x
1 x x x x x
2 x x x x x
Denken Sie daran, das Ergebnis zurückzugeben, da die Änderung nicht an Ort und Stelle erfolgt. Alternativ können Sie auch inplace=True
angeben:
df.rename({'a': 'X', 'b': 'Y'}, axis=1, inplace=True)
df
X Y c d e
0 x x x x x
1 x x x x x
2 x x x x x
Ab v0.25 können Sie auch errors='raise'
angeben, um Fehler zu melden, wenn eine ungültige Spalte zum Umbenennen angegeben wird. Siehe v0.25 rename()
docs.
Verwenden Sie df.set_axis()
mit axis=1
und inplace=False
(um eine Kopie zurückzugeben).
df2 = df.set_axis(['V', 'W', 'X', 'Y', 'Z'], axis=1, inplace=False)
df2
V W X Y Z
0 x x x x x
1 x x x x x
2 x x x x x
Dies gibt eine Kopie zurück, aber Sie können den DataFrame an Ort und Stelle verändern, indem Sie inplace=True
setzen (dies ist das Standardverhalten für die Versionen <=0.24, wird sich aber wahrscheinlich in Zukunft ändern).
Sie können Kopfzeilen auch direkt zuweisen:
df.columns = ['V', 'W', 'X', 'Y', 'Z']
df
V W X Y Z
0 x x x x x
1 x x x x x
2 x x x x x
Die Methode rename
kann zum Beispiel eine Funktion annehmen:
In [11]: df.columns
Out[11]: Index([u'$a', u'$b', u'$c', u'$d', u'$e'], dtype=object)
In [12]: df.rename(columns=lambda x: x[1:], inplace=True)
In [13]: df.columns
Out[13]: Index([u'a', u'b', u'c', u'd', u'e'], dtype=object)