Python Pandas - Get location and sliced index for requested label/ level in a MultiIndex

To get location and sliced index for requested label/level in a MultiIndex, use the get_loc_level() method in Pandas. This method returns both the location slice and the corresponding index values for the specified label.

What is get_loc_level()?

The get_loc_level() method returns a tuple containing:

  • A slice object indicating the location range
  • An Index object with the corresponding values from the specified level

Creating a MultiIndex

First, let's create a MultiIndex to demonstrate the method ?

import pandas as pd

# Create a MultiIndex from arrays
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')], 
                                       names=['One', 'Two'])

print("The MultiIndex...")
print(multiIndex)
The MultiIndex...
MultiIndex([('p', 's'),
            ('q', 't'),
            ('r', 'r'),
            ('r', 'v'),
            ('s', 'w'),
            ('s', 'x')],
           names=['One', 'Two'])

Using get_loc_level()

Now let's get the location and sliced index for the label 'r' ?

import pandas as pd

# Create the MultiIndex
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')], 
                                       names=['One', 'Two'])

# Get the location and sliced index for 'r'
location, sliced_index = multiIndex.get_loc_level('r')

print("Location slice:", location)
print("Sliced index:", sliced_index)
print("Complete result:", multiIndex.get_loc_level('r'))
Location slice: slice(2, 4, None)
Sliced index: Index(['r', 'v'], dtype='object', name='Two')
Complete result: (slice(2, 4, None), Index(['r', 'v'], dtype='object', name='Two'))

Specifying Level

You can also specify which level to search by using the level parameter ?

import pandas as pd

# Create the MultiIndex
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')], 
                                       names=['One', 'Two'])

# Get location for 'r' in level 'Two'
location, sliced_index = multiIndex.get_loc_level('r', level='Two')

print("Location for 'r' in level 'Two':", location)
print("Sliced index:", sliced_index)
Location for 'r' in level 'Two': 2
Sliced index: Index(['r'], dtype='object', name='One')

Practical Example

Here's how you might use this with a DataFrame ?

import pandas as pd

# Create a DataFrame with MultiIndex
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')], 
                                       names=['Level1', 'Level2'])
df = pd.DataFrame({'Values': [10, 20, 30, 40, 50, 60]}, index=multiIndex)

print("DataFrame:")
print(df)

# Get location information for 'r'
location, sliced_index = multiIndex.get_loc_level('r')
print(f"\nRows with 'r' in Level1: {location}")
print(f"Corresponding Level2 values: {list(sliced_index)}")
DataFrame:
                Values
Level1 Level2        
p      s            10
q      t            20
r      r            30
       v            40
s      w            50
       x            60

Rows with 'r' in Level1: slice(2, 4, None)
Corresponding Level2 values: ['r', 'v']

Conclusion

The get_loc_level() method is useful for finding the position and corresponding values of a specific label in a MultiIndex. It returns both the slice location and the index values, making it easy to locate and extract data from hierarchical structures.

Updated on: 2026-03-26T17:25:00+05:30

236 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements