MultiIndex에서 특정 레벨의 정수 위치(레벨 번호)를 사용하여 해당 레벨의 레이블 값을 벡터 형태로 반환하려면, Pandas의 MultiIndex.get_level_values() 메서드를 사용합니다. 이 메서드를 호출할 때 인자로 원하는 레벨을 지정하면 됩니다.
기본 사용법
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
MultiIndex는 pandas 객체에서 사용되는 다중 레벨(계층형) 인덱스 객체입니다. 다음과 같이 생성할 수 있습니다.
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')], names=['One', 'Two'])생성된 MultiIndex를 화면에 출력해 보겠습니다.
print("The MultiIndex...\n", multiIndex)이제 레벨 0의 레이블 값을 가져와 보겠습니다.
print("\nLevel values at level 0...\n", multiIndex.get_level_values(0))전체 예제 코드
다음은 지금까지 설명한 내용을 모두 포함한 완성된 코드입니다.
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)
# 레벨 0의 레이블 값 가져오기
print("\nLevel values at level 0...\n", multiIndex.get_level_values(0))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
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 at level 0...
Index(['p', 'q', 'r', 'r', 's', 's'], dtype='object', name='One')정리
get_level_values() 메서드에 정수 위치(0부터 시작)를 전달하면, 해당 레벨의 각 항목에 대응하는 레이블 값들이 Index 객체 형태의 벡터로 반환됩니다. 위 예제에서 레벨 0을 지정했더니 첫 번째 배열의 값들이 순서대로 반복 없이 그대로 유지된 채 반환된 것을 확인할 수 있습니다. 참고로 레벨 이름(name)도 함께 유지되므로, 계층형 데이터 분석 시 특정 레벨의 값만 추출하여 활용하기 매우 편리합니다.