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 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.
