Renaming column names in Pandas

Question

I want to change the column labels of a Pandas DataFrame from

['$a', '$b', '$c', '$d', '$e']

to

['a', 'b', 'c', 'd', 'e']

Answer

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)
df2 = df.rename({'a': 'X', 'b': 'Y'}, axis='columns')
df2 = df.rename(columns={'a': 'X', 'b': 'Y'}) 

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

You can specify errors='raise' to raise errors if an invalid column-to-rename is specified.


Reassign Column Headers

Use df.set_axis() with axis=1.

df2 = df.set_axis(['V', 'W', 'X', 'Y', 'Z'], axis=1)
df2

V W X Y Z 0 x x x x x 1 x x x x x 2 x x x x x

Headers can be assigned 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

How do I count the NaN values in a column in pandas DataFrame?

How can I get a value from a cell of a dataframe?