python – Renaming column names in Pandas

python – Renaming column names in Pandas

RENAME SPECIFIC COLUMNS

Use the df.rename() function and refer the columns to be renamed. Not all the columns have to be renamed:

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 Example

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

The following methods all work and produce the same 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

Remember to assign the result back, as the modification is not-inplace. Alternatively, specify 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
 

From v0.25, you can also specify errors=raise to raise errors if an invalid column-to-rename is specified. See v0.25 rename() docs.


REASSIGN COLUMN HEADERS

Use df.set_axis() with axis=1 and inplace=False (to return a copy).

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

This returns a copy, but you can modify the DataFrame in-place by setting inplace=True (this is the default behaviour for versions <=0.24 but is likely to change in the future).

You can also assign headers directly:

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

Just assign it to the .columns attribute:

>>> df = pd.DataFrame({$a:[1,2], $b: [10,20]})
>>> df
   $a  $b
0   1  10
1   2  20

>>> df.columns = [a, b]
>>> df
   a   b
0  1  10
1  2  20

python – Renaming column names in Pandas

The rename method can take a function, for example:

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([ua, ub, uc, ud, ue], dtype=object)

Leave a Reply

Your email address will not be published. Required fields are marked *