How to Flatten MultiIndex in Pandas? - GeeksforGeeks

28 Nov, 2021
In this article, we will discuss how to flatten multiIndex in pandas.
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 muktiindexexdata = 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 marksdata = pd.DataFrame({'ravi': [98, 89, 90, 88, 93],                     'reshma': [78, 89, 80, 98, 63],                      'sahithi': [78, 89, 80, 98, 63]},                      index=data)  # displaydata
Output:
Now, we will flatten the index of all levels:
Python3
import pandas as pd  # create DataFrame muktiindexexdata = 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 levelsdata.reset_index(inplace=True)  # displaydata
Output:
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 muktiindexexdata = 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 columndata.reset_index(inplace=True, level=['Course'])  # displaydata
Output:
We can also specify multiple levels;
Python3
import pandas as pd  # create DataFrame muktiindexexdata = 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 columnsdata.reset_index(inplace=True, level=['Course', 'subject id'])  # displaydata
Output:
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 muktiindexexdata = 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:
Picked
Python pandas-dataFrame
Python-pandas
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
How to Install PIP on Windows ?
Selecting rows in pandas DataFrame based on conditions
How to drop one or multiple columns in Pandas Dataframe
Python | Get unique values from a list
Check if element exists in list in Python
How To Convert Python Dictionary To JSON?
Defaultdict in Python
Python | os.path.join() method
Create a directory in Python
Bar Plot in Matplotlib