Renaming the Column Names of Pandas Dataframe Is Not Working as Expected - Python

I am having below pandas dataframe df. I am trying to rename the column names but it not working as expected.

Code:

 mapping = {df.columns[0]:'Date', df.columns[1]: 'A', df.columns[2]:'B', df.columns[3]: 'C',df.columns[4]:'D', df.columns[5]: 'E',df.columns[6]:'F', df.columns[7]: 'G',df.columns[8]:'H', df.columns[9]: 'J'}
 df.rename(columns=mapping) 

Output of df.columns:

MultiIndex(levels=[['A Index', 'B Index', 'C Index', 'D Index', 'E Index', 'F Index', 'G Index', 'H Index', 'I Index', 'J Index', 'K Index', 'L Index', 'M Index', 'N Index', 'O Index', 'date', 'index'], ['PX_LAST', '']],
       labels=[[16, 15, 11, 9, 10, 6, 3, 4, 2, 5, 14, 1, 13, 12, 7, 0, 8], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]],
       names=['ticker', 'field'])

Even after running the code, column name stays the same. Can anyone help rename column names of this dataframe.

3 Answers

Because you know the order of the columns already why not just use:

df.columns = ['Date', 'a', 'b', 'c', 'd', 'e', 'f' 'g', 'h', 'i', 'j']

Otherwise if you want to use rename you will need to assign it to a variable:

 mapping = {df.columns[0]:'Date', df.columns[1]: 'A', df.columns[2]:'B', df.columns[3]: 'C',df.columns[4]:'D', df.columns[5]: 'E',df.columns[6]:'F', df.columns[7]: 'G',df.columns[8]:'H', df.columns[9]: 'J'}
 df = df.rename(columns=mapping)
3

Adding inplace=True to the rename call will work.

Though, I'm not sure what the result is if I don't specify inplace=True, since I don't see any change.

2

Given the official documentation from pandas, the default value on axis parameter is 0 (meaning index).

Thus, changing your command to:

df.rename(columns = mapping, axis = 1)

, where axis equal to 1 means columns, will work as expected.

Also, as mentioned before, you can use the inplace = True so you won't have to reassign your updated dataframe.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Chloe Bennett

Chloe Bennett

Culture, Media & Entertainment Columnist

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.

Share this article
Twitter Facebook Pinterest