Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Python Pandas - Return MultiIndex with requested level removed
To return MultiIndex with requested level removed, use the MultiIndex.droplevel() method in Pandas. Set the level to be removed as an argument.
What is MultiIndex?
MultiIndex is a multi-level, or hierarchical, index object for pandas objects. It allows you to have multiple levels of indexing on a single axis ?
Creating a MultiIndex
First, create arrays and use from_arrays() to build a MultiIndex ?
import pandas as pd
# Create arrays for MultiIndex
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]
# The "names" parameter sets the names for each of the index levels
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
print("The Multi-index...")
print(multiIndex)
The Multi-index...
MultiIndex([(2, 'Peter'),
(4, 'Chris'),
(3, 'Andy'),
(1, 'Jacob')],
names=['ranks', 'student'])
Viewing MultiIndex Levels
You can inspect the levels in a MultiIndex using the levels attribute ?
import pandas as pd
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
print("The levels in Multi-index...")
print(multiIndex.levels)
The levels in Multi-index... [[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter']]
Dropping a Level Using droplevel()
Use droplevel() to remove a specific level from the MultiIndex. You can specify the level by position (integer) or by name ?
import pandas as pd
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
# Drop level 1 (the 'student' level)
print("Multi-index after dropping level 1...")
print(multiIndex.droplevel(1))
print("\nMulti-index after dropping 'student' level by name...")
print(multiIndex.droplevel('student'))
Multi-index after dropping level 1... Int64Index([2, 4, 3, 1], dtype='int64', name='ranks') Multi-index after dropping 'student' level by name... Int64Index([2, 4, 3, 1], dtype='int64', name='ranks')
Complete Example
Here's a comprehensive example showing the original MultiIndex and the result after dropping different levels ?
import pandas as pd
# Create arrays for MultiIndex
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]
# Create MultiIndex with named levels
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
# Display the original MultiIndex
print("Original Multi-index:")
print(multiIndex)
# Drop level 0 (ranks)
print("\nAfter dropping level 0 (ranks):")
print(multiIndex.droplevel(0))
# Drop level 1 (student)
print("\nAfter dropping level 1 (student):")
print(multiIndex.droplevel(1))
Original Multi-index:
MultiIndex([(2, 'Peter'),
(4, 'Chris'),
(3, 'Andy'),
(1, 'Jacob')],
names=['ranks', 'student'])
After dropping level 0 (ranks):
Index(['Peter', 'Chris', 'Andy', 'Jacob'], dtype='object', name='student')
After dropping level 1 (student):
Int64Index([2, 4, 3, 1], dtype='int64', name='ranks')
Conclusion
The droplevel() method is essential for simplifying MultiIndex structures by removing specific hierarchical levels. You can specify levels by position number or by their assigned names for more readable code.
