Mám DataFrame používající pandas a popisky sloupců, které potřebuji upravit, abych nahradil původní popisky sloupců.
Chtěl bych změnit názvy sloupců v DataFrame A
, kde jsou původní názvy sloupců:
['$a', '$b', '$c', '$d', '$e']
na
['a', 'b', 'c', 'd', 'e'].
Upravené názvy sloupců mám uložené v seznamu, ale nevím, jak je nahradit.
Použijte funkci df.rename()
a odkažte na sloupce, které chcete přejmenovat. Není nutné přejmenovat všechny sloupce:
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)
Příklad minimálního kódu
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
Následující metody fungují a poskytují stejný výstup:
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
Nezapomeňte výsledek přiřadit zpět, protože změna není na místě. Případně zadejte 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 verze 0.25 můžete také zadat errors='raise'
, abyste vyvolali chybu, pokud je zadán neplatný název sloupce. Viz v0.25 rename()
docs.
Použijte df.set_axis()
s axis=1
a inplace=False
(pro vrácení kopie).
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
Vrátí se kopie, ale DataFrame můžete upravit na místě nastavením inplace=True
(toto je výchozí chování pro verze <=0.24, ale v budoucnu se pravděpodobně změní).
Hlavičky můžete také přiřadit přímo:
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 rename
může přebírat například funkci:
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)