Python Pandas - Getting values from a specific level in Multiindex

To get values from a specific level in MultiIndex, use the get_level_values() method in Pandas. This method extracts all values from a particular level of a hierarchical index structure.

Creating a MultiIndex

First, let's create a MultiIndex with multiple levels using from_arrays() ?

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("Multi-index:")
print(multiIndex)
Multi-index:
MultiIndex([( 5, 15, 25, 35),
            (10, 20, 30, 40)],
           names=['a', 'b', 'c', 'd'])

Getting Values from Specific Levels

Using Level Index Numbers

Extract values from specific levels using their position index ?

import pandas as pd

multiIndex = pd.MultiIndex.from_arrays([[5, 10], [15, 20], [25, 30], [35, 40]],
                                       names=['a', 'b', 'c', 'd'])

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

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

print("\nLevel 2 values:")
print(multiIndex.get_level_values(2))
Level 0 values:
Index([5, 10], dtype='int64', name='a')

Level 1 values:
Index([15, 20], dtype='int64', name='b')

Level 2 values:
Index([25, 30], dtype='int64', name='c')

Using Level Names

You can also access levels by their names instead of index positions ?

import pandas as pd

multiIndex = pd.MultiIndex.from_arrays([[5, 10], [15, 20], [25, 30], [35, 40]],
                                       names=['a', 'b', 'c', 'd'])

# Get values using level names
print("Level 'a' values:")
print(multiIndex.get_level_values('a'))

print("\nLevel 'c' values:")
print(multiIndex.get_level_values('c'))
Level 'a' values:
Index([5, 10], dtype='int64', name='a')

Level 'c' values:
Index([25, 30], dtype='int64', name='c')

Practical Example with DataFrame

Here's how get_level_values() works with a real DataFrame ?

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:")
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:
            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')

Key Points

  • get_level_values() accepts either integer positions or level names
  • Returns an Index object containing all values from the specified level
  • Preserves the original order of values in the MultiIndex
  • The returned Index maintains the level name as its name attribute

Conclusion

The get_level_values() method provides an efficient way to extract values from specific levels in a MultiIndex. Use level positions for simple access or level names for more readable code.

Updated on: 2026-03-26T16:32:39+05:30

6K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements