w3resource

Pandas: Rename names of columns and specific labels of the Main Index of MultiIndex dataframe


Write a Pandas program to rename names of columns and specific labels of the Main Index of the MultiIndex dataframe.

Sample Solution:

Python Code :

import pandas as pd 
import numpy as np
sales_arrays = [['sale1', 'sale1', 'sale2', 'sale2', 'sale3', 'sale3', 'sale4', 'sale4'],
          ['city1', 'city2', 'city1', 'city2', 'city1', 'city2', 'city1', 'city2']]
sales_tuples = list(zip(*sales_arrays))
sales_index = pd.MultiIndex.from_tuples(sales_tuples, names=['sale', 'city'])
print(sales_tuples)
print("\nConstruct a Dataframe using the said MultiIndex levels: ")
df = pd.DataFrame(np.random.randn(8, 5), index=sales_index)
print(df)
print("\nRename the columns name of the said dataframe")
df1 = df.rename(columns={0: "col1", 1: "col2", 2:"col3", 3:"col4", 4:"col5"})
print(df1)
print("\nRename specific labels of the main index of the DataFrame")
df2 = df1.rename(index={"sale2": "S2", "city2": "C2"})
print(df2)

Sample Output:

[('sale1', 'city1'), ('sale1', 'city2'), ('sale2', 'city1'), ('sale2', 'city2'), ('sale3', 'city1'), ('sale3', 'city2'), ('sale4', 'city1'), ('sale4', 'city2')]

Construct a Dataframe using the said MultiIndex levels: 
                    0         1         2         3         4
sale  city                                                   
sale1 city1 -0.846342 -0.741958  1.776873 -0.526789  0.425722
      city2 -1.191729  2.871049  1.334246 -0.555390  0.678033
sale2 city1  1.215433 -0.305873 -0.197025 -1.145550  0.367179
      city2 -1.043111 -0.054862 -0.409382 -0.781236 -1.111498
sale3 city1  0.198136 -0.092846  0.211265 -0.338316 -0.006117
      city2  1.254932  0.660553 -0.343675 -1.488751  1.141144
sale4 city1  0.440996 -1.886134 -1.705170 -0.583568 -0.094108
      city2 -0.645809 -0.979893  0.589839 -0.440143  0.032115

Rename the columns name of the said dataframe
                 col1      col2      col3      col4      col5
sale  city                                                   
sale1 city1 -0.846342 -0.741958  1.776873 -0.526789  0.425722
      city2 -1.191729  2.871049  1.334246 -0.555390  0.678033
sale2 city1  1.215433 -0.305873 -0.197025 -1.145550  0.367179
      city2 -1.043111 -0.054862 -0.409382 -0.781236 -1.111498
sale3 city1  0.198136 -0.092846  0.211265 -0.338316 -0.006117
      city2  1.254932  0.660553 -0.343675 -1.488751  1.141144
sale4 city1  0.440996 -1.886134 -1.705170 -0.583568 -0.094108
      city2 -0.645809 -0.979893  0.589839 -0.440143  0.032115

Rename specific labels of the main index of the DataFrame
                 col1      col2      col3      col4      col5
sale  city                                                   
sale1 city1 -0.846342 -0.741958  1.776873 -0.526789  0.425722
      C2    -1.191729  2.871049  1.334246 -0.555390  0.678033
S2    city1  1.215433 -0.305873 -0.197025 -1.145550  0.367179
      C2    -1.043111 -0.054862 -0.409382 -0.781236 -1.111498
sale3 city1  0.198136 -0.092846  0.211265 -0.338316 -0.006117
      C2     1.254932  0.660553 -0.343675 -1.488751  1.141144
sale4 city1  0.440996 -1.886134 -1.705170 -0.583568 -0.094108
      C2    -0.645809 -0.979893  0.589839 -0.440143  0.032115

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Pandas program to extract a single row, rows and a specific value from a MultiIndex levels DataFrame.

Next: Write a Pandas program to sort a MultiIndex of a DataFrame. Also sort on various levels of index.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.