Pandas의 MultiIndex(멀티 인덱스)에서 특정 레벨의 값을 추출하려면 multiIndex.get_level_values() 메서드를 사용하면 됩니다. 이 메서드는 지정한 레벨에 해당하는 값들을 Index 형태로 반환해 줍니다.
라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
멀티 인덱스 생성
이제 멀티 인덱스를 생성합니다. 이때 names 매개변수를 사용하면 인덱스의 각 레벨에 이름을 부여할 수 있습니다.
multiIndex = pd.MultiIndex.from_arrays([[5, 10], [15, 20], [25, 30], [35, 40]], names=['a', 'b', 'c', 'd'])
특정 레벨의 값 가져오기
레벨 번호를 지정하여 해당 레벨의 값을 가져올 수 있습니다.
0번째 레벨의 값 가져오기
print("\nGet level value (0th level)...\n", multiIndex.get_level_values(0))1번째 레벨의 값 가져오기
print("\nGet level value (1st level)...\n", multiIndex.get_level_values(1))전체 예제 코드
아래는 위 내용을 모두 포함한 전체 예제입니다. 참고로 마지막에는 droplevel() 메서드를 사용하여 멀티 인덱스에서 레벨을 제거하는 방법도 함께 살펴봅니다.
import pandas as pd
# 멀티 인덱스 생성
# names 매개변수는 인덱스의 각 레벨에 이름을 지정합니다.
multiIndex = pd.MultiIndex.from_arrays([[5, 10], [15, 20], [25, 30], [35, 40]],
names=['a', 'b', 'c', 'd'])
print("Multi-index...\n", multiIndex)
# 0번째 레벨의 값 가져오기
print("\nGet level value (0th level)...\n", multiIndex.get_level_values(0))
# 1번째 레벨의 값 가져오기
print("\nGet level value (1st level)...\n", multiIndex.get_level_values(1))
# 멀티 인덱스에서 레벨 제거하기
print("\nDropping a level...\n", multiIndex.droplevel())실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Multi-index...
MultiIndex([( 5, 15, 25, 35),
(10, 20, 30, 40)],
names=['a', 'b', 'c', 'd'])
Get level value (0th level)...
Int64Index([5, 10], dtype='int64', name='a')
Get level value (1st level)...
Int64Index([15, 20], dtype='int64', name='b')
Dropping a level...
MultiIndex([(15, 25, 35),
(20, 30, 40)],
names=['b', 'c', 'd'])실행 결과를 보면 get_level_values(0)은 첫 번째 레벨 'a'의 값인 [5, 10]을 반환하고, get_level_values(1)은 두 번째 레벨 'b'의 값인 [15, 20]을 반환하는 것을 확인할 수 있습니다. 또한 droplevel()을 호출하면 가장 바깥쪽 레벨('a')이 제거되어 나머지 레벨들만 남게 됩니다.