Revert From MultiIndex to Single Index in Pandas

Revert From MultiIndex to Single Index in Pandas

  1. Rename the Columns to Standard Columns to Convert MultiIndex to Single Index in Pandas
  2. Reset the Levels of the Column to Convert MultiIndex to Single Index in Pandas

This tutorial teaches how to revert from MultiIndex to a single index dataframe in Pandas using Python.

A MultiIndex dataframe, also called a multi-level and hierarchical dataframe, lets the user have multiple columns that can identify a row while having each column index related to each other through a different parent-child relationship in the table.

We can use two methods to convert multi-level indexing to single indexing. We will learn both the flexibility and increased efficiency in manipulating dataframes in Pandas.

Rename the Columns to Standard Columns to Convert MultiIndex to Single Index in Pandas

We must first create a dataframe consisting of MultiIndex columns in this method. After that, we can change the name of the columns, that is, the standard columns, so we can get rid of the MultiIndex with ease and without any errors.

Below is a code where the entire process for this method is followed right from the beginning.

import pandas as pd
import numpy as np
# build an example DataFrame
midx = pd.MultiIndex(levels=[['zero', 'one'], ['x','y']], codes=[[1,1,0,],[1,0,1,]])
df = pd.DataFrame(np.random.randn(2,3), columns=midx)
print(df)

The code will give us the following output.

        one                zero
          y         x         y
0  0.785806 -0.679039  0.513451
1 -0.337862 -0.350690 -1.423253

So, as we can observe, a dataframe has been created with multi-level index columns. To revert this column to single-level indexed, we need to rename them in the following method below.

df.columns = ['A','B','C']
print(df)

The output for the above code is as follows.

          A         B         C
0  0.785806 -0.679039  0.513451
1 -0.337862 -0.350690 -1.423253

The hierarchical indexing has been removed, and only new names are shown, replacing the older names of the columns.

Reset the Levels of the Column to Convert MultiIndex to Single Index in Pandas

In this method, we would just reset the levels of the MultiIndex columns to convert them into single-level columns.

The reset_index() method lets the user reset the index of the dataframe and consider the default index again. One can use this method to remove one or more levels simultaneously.

We would do that by adding a single line to the previously used code snippet. Let us consider a different example to learn the technique more clearly and flexibly.

index = pd.MultiIndex.from_tuples([('bird', 'falcon'),
                                   ('bird', 'parrot'),
                                   ('mammal', 'lion'),
                                   ('mammal', 'monkey')],
                                  names=['class', 'name'])
columns = pd.MultiIndex.from_tuples([('speed', 'max'),
                                     ('species', 'type')])
df = pd.DataFrame([(389.0, 'fly'),
                   ( 24.0, 'fly'),
                   ( 80.5, 'run'),
                   (np.nan, 'jump')],
                  index=index,
                  columns=columns)
print(df)

The above code will give us the following output.

				speed	species
				max		type
class	name
bird	falcon	389.0	fly
		parrot	24.0	fly
mammal	lion	80.5	run
		monkey	NaN	    jump

We would get the following output using the reset_index() method.

print(df.reset_index(level='class'))
		 class  speed species
                  max    type
name
falcon    bird  389.0     fly
parrot    bird   24.0     fly
lion    mammal   80.5     run
monkey  mammal    NaN    jump

The reset_index() method would reset the columns’ indexes through which the hierarchical levels are diluted and converted into a single-level column dataframe. The output to the above code is given as follows.

So in this tutorial, we have learned how to convert a MultiIndex column back to a single level column without bugs and easily without confusion.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Related Article - Pandas Index

  • Get and Set Pandas DataFrame Index Name
  • Pandas DataFrame Remove Index
  • Pandas DataFrame Reset Index