Ik heb een DataFrame met pandas en kolomlabels die ik moet bewerken om de originele kolomlabels te vervangen.
Ik'wil de kolomnamen wijzigen in een DataFrame A
waar de originele kolomnamen staan:
['$a', '$b', '$c', '$d', '$e']
in
['a', 'b', 'c', 'd', 'e'].
Ik heb de bewerkte kolomnamen opgeslagen in een lijst, maar ik weet niet hoe ik de kolomnamen moet vervangen.
Gebruik de functie df.rename()
en verwijs naar de kolommen die hernoemd moeten worden. Niet alle kolommen hoeven hernoemd te worden:
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)
Minimaal codevoorbeeld
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
De volgende methodes werken allemaal en produceren dezelfde output:
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
Vergeet niet om het resultaat terug te wijzen, omdat de wijziging niet-inplace is. Als alternatief, specificeer inplace=True
:
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
Vanaf v0.25 kun je ook errors='raise'
specificeren om fouten te laten verschijnen als een ongeldige kolom-naar-rename is opgegeven. Zie v0.25 rename()
docs.
Gebruik df.set_axis()
met axis=1
en inplace=False
(om een kopie terug te geven).
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
Dit geeft een kopie terug, maar je kunt het DataFrame in-place wijzigen door inplace=True
in te stellen (dit is het standaard gedrag voor versies <=0.24 maar zal waarschijnlijk in de toekomst veranderen).
Je kunt ook direct headers toewijzen:
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
De rename
methode kan een functie aannemen, bijvoorbeeld:
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)