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 multiple levels removed using the level names
To return MultiIndex with multiple levels removed using the level names, use the MultiIndex.droplevel() method and set the multiple levels (level name) to be removed as arguments.
Syntax
MultiIndex.droplevel(level)
Where level can be a single level name/number or a list of level names/numbers to drop.
Creating a MultiIndex
First, let's create a MultiIndex with multiple levels using from_arrays() ?
import pandas as pd
# Create arrays for different levels
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]
# Create MultiIndex with named levels
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))
# Display the MultiIndex
print("The Multi-index...")
print(multiIndex)
The Multi-index...
MultiIndex([(2, 'Peter', 50),
(4, 'Chris', 30),
(3, 'Andy', 40),
(1, 'Jacob', 70)],
names=['rank', 'student', 'points'])
Dropping Multiple Levels by Name
Use droplevel() with a list of level names to remove multiple levels simultaneously ?
import pandas as pd
# Create MultiIndex
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))
print("Original MultiIndex:")
print(multiIndex)
# Drop two levels by name
result = multiIndex.droplevel(['rank', 'student'])
print("\nAfter dropping 'rank' and 'student' levels:")
print(result)
Original MultiIndex:
MultiIndex([(2, 'Peter', 50),
(4, 'Chris', 30),
(3, 'Andy', 40),
(1, 'Jacob', 70)],
names=['rank', 'student', 'points'])
After dropping 'rank' and 'student' levels:
Index([50, 30, 40, 70], dtype='int64', name='points')
Dropping Different Level Combinations
You can drop different combinations of levels as needed ?
import pandas as pd
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))
# Drop only the middle level
result1 = multiIndex.droplevel(['student'])
print("Dropping 'student' level:")
print(result1)
# Drop first and last levels
result2 = multiIndex.droplevel(['rank', 'points'])
print("\nDropping 'rank' and 'points' levels:")
print(result2)
Dropping 'student' level:
MultiIndex([(2, 50),
(4, 30),
(3, 40),
(1, 70)],
names=['rank', 'points'])
Dropping 'rank' and 'points' levels:
Index(['Peter', 'Chris', 'Andy', 'Jacob'], dtype='object', name='student')
Conclusion
The droplevel() method allows you to remove multiple levels from a MultiIndex by specifying level names in a list. This is useful for simplifying hierarchical indexes and focusing on specific dimensions of your data.
