Open In App
Related Articles

How to Flatten MultiIndex in Pandas?

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

In this article, we will discuss how to flatten multiIndex in pandas.

Flatten all levels of MultiIndex:

In this method, we are going to flat all levels of the dataframe by using the reset_index() function.

Syntax:

dataframe.reset_index(inplace=True)

Note: Dataframe is the input dataframe, we have to create the dataframe MultiIndex.

Syntax:

MultiIndex.from_tuples([(tuple1),.......,(tuple n),names=[column_names])

Arguments:

  • tuples are the values
  • column names are the names of columns in each tuple value

Example:

In this example, we will create a dataframe along with multiIndex and display it in the python programming language.

Python3

import pandas as pd
 
# create DataFrame multiIndex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
 
# create dataframe with student marks
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93],
                     'reshma': [78, 89, 80, 98, 63],
                     'sahithi': [78, 89, 80, 98, 63]}, 
                    index=data)
 
# display
data

                    

Output:

Now, we will flatten the index of all levels:

Python3

import pandas as pd
 
# create DataFrame multiIndex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
 
# create dataframe with student marks
 
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93],
                     'reshma': [78, 89, 80, 98, 63],
                     'sahithi': [78, 89, 80, 98, 63]},
                    index=data)
 
 
# flatten the index of all levels
data.reset_index(inplace=True)
 
# display
data

                    

Output:

Flatten specific levels of MultiIndex

By using specific levels we can get by using the following syntax:

dataframe.reset_index(inplace=True,level=['level_name'])

where

  • dataframe is the input dataframe
  • level_name is the name of the multiindex level

Example:

In this example, we will create a dataframe and flatten specific levels of multiIndex and display it in the python programming language.

Python3

import pandas as pd
 
# create DataFrame multiIndex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
 
# create dataframe with student marks
 
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93],
                     'reshma': [78, 89, 80, 98, 63],
                     'sahithi': [78, 89, 80, 98, 63]},
                    index=data)
 
# flatten the index of level with course column
data.reset_index(inplace=True, level=['Course'])
 
# display
data

                    

Output:

We can also specify multiple levels;

Python3

import pandas as pd
 
# create DataFrame multiIndex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
 
# create dataframe with student marks
 
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93],
                     'reshma': [78, 89, 80, 98, 63],
                     'sahithi': [78, 89, 80, 98, 63]},
                    index=data)
 
# flatten the index of level with course
# and subject id columns
data.reset_index(inplace=True, level=['Course', 'subject id'])
 
# display
data

                    

Output:

Using to_records() method

This is a pandas module method used to convert multiindex dataframe into each record and display.

Syntax:

dataframe.to_records()

Example:

Python3

import pandas as pd
 
# create DataFrame multiIndex
data = pd.MultiIndex.from_tuples([('Web Programming', 'php', 'sub1'),
                                  ('Scripting', 'python', 'sub2'),
                                  ('networks', 'computer network', 'sub3'),
                                  ('architecture', 'computer organization', 'sub4'),
                                  ('coding', 'java', 'sub5')],
                                 names=['Course', 'Subject name', 'subject id'])
 
# create dataframe with student marks
 
data = pd.DataFrame({'ravi': [98, 89, 90, 88, 93],
                     'reshma': [78, 89, 80, 98, 63],
                     'sahithi': [78, 89, 80, 98, 63]},
                    index=data)
 
pd.DataFrame(data.to_records())

                    

Output:



Last Updated : 15 Dec, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads