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 – Return index with a level removed
To return an index with a level removed, use the MultiIndex.droplevel() method in Pandas. This method removes one or more levels from a MultiIndex and returns a new index with the remaining levels.
Syntax
MultiIndex.droplevel(level=0)
The level parameter specifies which level to drop. It can be an integer (level position), string (level name), or list of integers/strings for multiple levels.
Creating a MultiIndex
First, let's create a MultiIndex to demonstrate the droplevel operation ?
import pandas as pd
# Create a multi-index with 4 levels
multiIndex = pd.MultiIndex.from_arrays([
[5, 10],
[15, 20],
[25, 30],
[35, 40]
], names=['a', 'b', 'c', 'd'])
print("Original MultiIndex:")
print(multiIndex)
Original MultiIndex:
MultiIndex([( 5, 15, 25, 35),
(10, 20, 30, 40)],
names=['a', 'b', 'c', 'd'])
Dropping the First Level (Default)
By default, droplevel() removes the first level (level 0) ?
import pandas as pd
multiIndex = pd.MultiIndex.from_arrays([
[5, 10],
[15, 20],
[25, 30],
[35, 40]
], names=['a', 'b', 'c', 'd'])
# Drop the first level (level 0)
result = multiIndex.droplevel()
print("After dropping first level:")
print(result)
After dropping first level:
MultiIndex([(15, 25, 35),
(20, 30, 40)],
names=['b', 'c', 'd'])
Dropping Specific Levels
You can specify which level to drop by position or name ?
import pandas as pd
multiIndex = pd.MultiIndex.from_arrays([
[5, 10],
[15, 20],
[25, 30],
[35, 40]
], names=['a', 'b', 'c', 'd'])
# Drop level by position (level 2)
result1 = multiIndex.droplevel(2)
print("Drop level 2 by position:")
print(result1)
# Drop level by name
result2 = multiIndex.droplevel('c')
print("\nDrop level 'c' by name:")
print(result2)
Drop level 2 by position:
MultiIndex([( 5, 15, 35),
(10, 20, 40)],
names=['a', 'b', 'd'])
Drop level 'c' by name:
MultiIndex([( 5, 15, 35),
(10, 20, 40)],
names=['a', 'b', 'd'])
Dropping Multiple Levels
You can also drop multiple levels at once by passing a list ?
import pandas as pd
multiIndex = pd.MultiIndex.from_arrays([
[5, 10],
[15, 20],
[25, 30],
[35, 40]
], names=['a', 'b', 'c', 'd'])
# Drop multiple levels
result = multiIndex.droplevel([0, 2])
print("Drop levels 0 and 2:")
print(result)
Drop levels 0 and 2:
MultiIndex([(15, 35),
(20, 40)],
names=['b', 'd'])
Conclusion
The droplevel() method provides a flexible way to remove one or more levels from a MultiIndex. You can specify levels by position, name, or as a list for multiple levels, making it easy to reshape your index structure as needed.
