Python Pandas - Return vector of label values for requested level in a MultiIndex

To return vector of label values for requested level in a MultiIndex, use the get_level_values() method. This method accepts either a level number (integer) or level name (string) as an argument.

Understanding MultiIndex

A MultiIndex is a hierarchical index object that enables multi-dimensional indexing on pandas objects. Let's first create a MultiIndex:

import pandas as pd

# Create 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'])

Getting Level Values

Use get_level_values() to extract values from a specific level. You can specify the level by number or name:

import pandas as pd

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

# Get level values by position (level 0)
print("Level 0 values:")
print(multiIndex.get_level_values(0))

print("\nLevel 1 values:")
print(multiIndex.get_level_values(1))

# Get level values by name
print("\nLevel 'One' values:")
print(multiIndex.get_level_values('One'))

print("\nLevel 'Two' values:")
print(multiIndex.get_level_values('Two'))
Level 0 values:
Index(['p', 'q', 'r', 'r', 's', 's'], dtype='object', name='One')

Level 1 values:
Index(['s', 't', 'r', 'v', 'w', 'x'], dtype='object', name='Two')

Level 'One' values:
Index(['p', 'q', 'r', 'r', 's', 's'], dtype='object', name='One')

Level 'Two' values:
Index(['s', 't', 'r', 'v', 'w', 'x'], dtype='object', name='Two')

Practical Example with DataFrame

Here's how get_level_values() works with a DataFrame having MultiIndex:

import pandas as pd

# Create DataFrame with MultiIndex
arrays = [['A', 'A', 'B', 'B'], ['X', 'Y', 'X', 'Y']]
index = pd.MultiIndex.from_arrays(arrays, names=['Group', 'Type'])
df = pd.DataFrame({'Value': [10, 20, 30, 40]}, index=index)

print("DataFrame with MultiIndex:")
print(df)

print("\nGroup level values:")
print(df.index.get_level_values('Group'))

print("\nType level values:")
print(df.index.get_level_values('Type'))
DataFrame with MultiIndex:
            Value
Group Type       
A     X        10
      Y        20
B     X        30
      Y        40

Group level values:
Index(['A', 'A', 'B', 'B'], dtype='object', name='Group')

Type level values:
Index(['X', 'Y', 'X', 'Y'], dtype='object', name='Type')

Conclusion

The get_level_values() method is essential for extracting specific level data from MultiIndex objects. Use integer positions (0, 1, 2...) or level names to access the desired level values efficiently.

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

363 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements