Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

How to Flatten MultiIndex in Pandas?

  • Last Updated : 28 Nov, 2021

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 muktiindexex
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 muktiindexex
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 muktiindexex
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 muktiindexex
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 muktiindexex
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:


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!