Imam DataFrame, ki uporablja pandas in oznake stolpcev, ki jih moram urediti, da zamenjam prvotne oznake stolpcev.
Rad bi spremenil imena stolpcev v DataFrame A
, kjer so originalna imena stolpcev:
['$a', '$b', '$c', '$d', '$e']
v .
['a', 'b', 'c', 'd', 'e'].
Imam urejena imena stolpcev shranjena na seznamu, vendar ne vem, kako zamenjati imena stolpcev.
Uporabite funkcijo df.rename()
in navedite stolpce, ki jih želite preimenovati. Ni treba preimenovati vseh stolpcev:
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)
Minimalni primer kode
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
Vse naslednje metode delujejo in dajejo enak rezultat:
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
Ne pozabite dodeliti rezultata nazaj, saj sprememba ni na mestu. Druga možnost je, da določite 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
Od različice 0.25 lahko določite tudi errors='raise'
, da se sprožijo napake, če je določeno napačno preimenovanje stolpca. Glejte v0.25 rename()
docs.
Uporabite df.set_axis()
z axis=1
in inplace=False
(za vrnitev kopije).
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
To vrne kopijo, vendar lahko podatkovni okvir spremenite na mestu z nastavitvijo inplace=True
(to je privzeto vedenje za različice <=0.24, vendar se bo v prihodnosti verjetno spremenilo).
Glave lahko dodelite tudi neposredno:
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
Metoda preimenuj
lahko prevzame funkcijo, na primer:
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)