Pandas에서 MultiIndex의 특정 레벨에 해당하는 레이블(label) 값들을 벡터 형태로 가져오려면 MultiIndex.get_level_values() 메서드를 사용합니다. 이 메서드는 레벨 번호뿐만 아니라 레벨 이름을 기준으로도 호출할 수 있어, 계층형 인덱스를 다룰 때 매우 유용합니다.
1단계: 필요한 라이브러리 임포트하기
가장 먼저 pandas를 임포트합니다.
import pandas as pd
2단계: MultiIndex 생성하기
MultiIndex는 pandas 객체에 사용되는 다중 레벨(계층적) 인덱스 객체입니다. 여기서는 두 개의 배열과 각 레벨의 이름('One', 'Two')을 지정하여 MultiIndex를 만들어 보겠습니다.
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')], names=['One', 'Two'])names 매개변수에 레벨 이름을 부여하면, 이후 위치 번호 대신 이름으로 해당 레벨에 접근할 수 있습니다.
3단계: MultiIndex 출력하기
생성된 MultiIndex가 어떻게 구성되어 있는지 확인합니다.
print("The MultiIndex...\n", multiIndex)4단계: 레벨 이름으로 레이블 값 가져오기
레벨 이름 "Two"를 지정하여 해당 레벨의 모든 레이블 값을 반환합니다.
print("\nLevel values using level name...\n", multiIndex.get_level_values("Two"))전체 예제 코드
지금까지의 과정을 하나의 완전한 코드로 정리하면 다음과 같습니다.
import pandas as pd
# MultiIndex는 pandas 객체를 위한 다중 레벨(계층적) 인덱스 객체입니다.
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')], names=['One', 'Two'])
# MultiIndex 출력
print("The MultiIndex...\n", multiIndex)
# MultiIndex의 레벨 정보 확인
print("\nThe levels in MultiIndex...\n", multiIndex.levels)
# 레벨 이름 "Two"를 사용하여 레이블 값 가져오기
print("\nLevel values using level name...\n", multiIndex.get_level_values("Two"))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
The MultiIndex...
MultiIndex([('p', 's'),
('q', 't'),
('r', 'r'),
('r', 'v'),
('s', 'w'),
('s', 'x')],
names=['One', 'Two'])
The levels in MultiIndex...
[['p', 'q', 'r', 's'], ['r', 's', 't', 'v', 'w', 'x']]
Level values using level name...
Index(['s', 't', 'r', 'v', 'w', 'x'], dtype='object', name='Two')결과 해석
get_level_values("Two")는 두 번째 레벨(Two)의 레이블 값들을 원래 MultiIndex의 순서 그대로 담은 새로운 Index 객체를 반환합니다. 즉, 고유한 값만 모은 levels(['r', 's', 't', 'v', 'w', 'x'])와 달리, 중복을 포함한 전체 6개 요소(['s', 't', 'r', 'v', 'w', 'x'])가 그대로 유지됩니다. 반환된 Index에는 name='Two' 속성도 함께 설정되어 있어 어느 레벨에서 온 값인지 쉽게 확인할 수 있습니다.