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
Selected Reading
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
nameattribute
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.
Advertisements
