- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Python – Drop multiple levels from a multi-level column index in Pandas dataframe
To drop multiple levels from a multi-level column index, use the columns.droplevel() repeatedly. We have used the Multiindex.from_tuples() is used to create indexes column-wise.
At first, create indexes column-wise −
items = pd.MultiIndex.from_tuples([("Col 1", "Col 1", "Col 1"),("Col 2", "Col 2", "Col 2"),("Col 3", "Col 3", "Col 3")])
Next, create a multiindex array and form a multiindex dataframe −
arr = [np.array(['car', 'car', 'car','bike','bike', 'bike', 'truck', 'truck', 'truck']), np.array(['valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC'])] # forming multiindex dataframe dataFrame = pd.DataFrame(np.random.randn(9, 3), index=arr,columns=items)
Label the index −
dataFrame.index.names = ['level 0', 'level 1']
Drop a level at index 0 −
dataFrame.columns = dataFrame.columns.droplevel(0)
We deleted a level at 0 index. After deleting, the level 1 is now level 0. To delete another level, just use the above again i.e.
dataFrame.columns = dataFrame.columns.droplevel(0)
Following is the code
Example
import numpy as np import pandas as pd items = pd.MultiIndex.from_tuples([("Col 1", "Col 1", "Col 1"),("Col 2", "Col 2", "Col 2"),("Col 3", "Col 3", "Col 3")]) # multiindex array arr = [np.array(['car', 'car', 'car','bike','bike', 'bike', 'truck', 'truck', 'truck']), np.array(['valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC','valueA', 'valueB', 'valueC'])] # forming multiindex dataframe dataFrame = pd.DataFrame(np.random.randn(9, 3), index=arr,columns=items) # labelling index dataFrame.index.names = ['one', 'two'] print"DataFrame...\n",dataFrame print"\nDropping a level...\n"; dataFrame.columns = dataFrame.columns.droplevel(0) print"Updated DataFrame..\n",dataFrame print"\nDropping another level...\n"; dataFrame.columns = dataFrame.columns.droplevel(0) print"Updated DataFrame..\n",dataFrame
Output
This will produce the following output −
DataFrame... Col 1 Col 2 Col 3 Col 1 Col 2 Col 3 Col 1 Col 2 Col 3 one two car valueA 0.425077 0.020606 1.148156 valueB -1.720355 0.502863 1.184753 valueC 0.373106 1.300935 -0.128404 bike valueA -0.648708 0.944725 0.593327 valueB -0.613921 -0.238730 -0.218448 valueC 0.313042 -0.628065 0.910935 truck valueA 0.286377 0.478067 -1.000645 valueB 1.151793 -0.171433 -0.612346 valueC -1.358061 0.735075 0.092700 Dropping a level... Updated DataFrame.. Col 1 Col 2 Col 3 Col 1 Col 2 Col 3 one two car valueA 0.425077 0.020606 1.148156 valueB -1.720355 0.502863 1.184753 valueC 0.373106 1.300935 -0.128404 bike valueA -0.648708 0.944725 0.593327 valueB -0.613921 -0.238730 -0.218448 valueC 0.313042 -0.628065 0.910935 truck valueA 0.286377 0.478067 -1.000645 valueB 1.151793 -0.171433 -0.612346 valueC -1.358061 0.735075 0.092700 Dropping another level... Updated DataFrame.. Col 1 Col 2 Col 3 one two car valueA 0.425077 0.020606 1.148156 valueB -1.720355 0.502863 1.184753 valueC 0.373106 1.300935 -0.128404 bike valueA -0.648708 0.944725 0.593327 valueB -0.613921 -0.238730 -0.218448 valueC 0.313042 -0.628065 0.910935 truck valueA 0.286377 0.478067 -1.000645 valueB 1.151793 -0.171433 -0.612346 valueC -1.358061 0.735075 0.092700
- Related Articles
- Python – Drop a level from a multi-level column index in Pandas dataframe
- Python - Stacking a multi-level column in a Pandas DataFrame
- Python Pandas - Drop the value when all levels are NaN in a Multi-index
- Python Pandas - Drop the value when any level is NaN in a Multi-index
- Python Pandas - Create a DataFrame with the levels of the MultiIndex as columns and substitute index level names
- Python Pandas - Display the index of dataframe in the form of multi-index
- Python - Drop specific rows from multiindex Pandas Dataframe
- Python - Select multiple columns from a Pandas dataframe
- Python Pandas - Return MultiIndex with multiple levels removed using the level names
- Python - How to drop the null rows from a Pandas DataFrame
- Python Pandas - Create a DataFrame from original index but enforce a new index
- Python Pandas - Create a DataFrame from DateTimeIndex ignoring the index
- Python Pandas - Get location and sliced index for requested label/ level but do not drop the level
- Python - Rename column names by index in a Pandas DataFrame without using rename()
- Python Pandas – Remove numbers from string in a DataFrame column

Advertisements