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.

Updated on: 2026-03-26T16:08:14+05:30

155 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements