Pandas의 MultiIndex.get_loc() 메서드를 사용하면 MultiIndex에서 특정 레이블(label) 또는 레이블 튜플(tuple)이 위치한 인덱스를 손쉽게 조회할 수 있습니다. 이 메서드는 레이블이 한 번만 나타나면 정수(int)를, 여러 번 나타나면 슬라이스(slice) 객체를 반환합니다.
필요한 라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
MultiIndex 생성하기
MultiIndex는 pandas 객체를 위한 다중 레벨(계층형) 인덱스 객체입니다. pd.MultiIndex.from_arrays()를 사용하면 배열 리스트로부터 간단하게 만들 수 있습니다.
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('stuvwx')])생성된 MultiIndex를 출력해 보겠습니다.
print("The MultiIndex...\n", multiIndex)레이블의 위치 조회하기
get_loc() 메서드에 찾고자 하는 레이블을 전달하면 해당 레이블의 위치를 얻을 수 있습니다.
print("\nGet the locations in MultiIndex...\n", multiIndex.get_loc('s'))예제 전체 코드
지금까지의 내용을 하나로 합친 전체 코드는 다음과 같습니다.
import pandas as pd
# MultiIndex는 pandas 객체를 위한 다중 레벨(계층형) 인덱스 객체입니다.
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('stuvwx')])
# MultiIndex 출력
print("The MultiIndex...\n", multiIndex)
# MultiIndex의 레벨(levels) 확인
print("\nThe levels in MultiIndex...\n", multiIndex.levels)
# 's' 레이블의 위치 조회
print("\nGet the locations in MultiIndex...\n", multiIndex.get_loc('s'))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
The MultiIndex...
MultiIndex([('p', 's'),
('q', 't'),
('r', 'u'),
('r', 'v'),
('s', 'w'),
('s', 'x')],
)
The levels in MultiIndex...
[['p', 'q', 'r', 's'], ['s', 't', 'u', 'v', 'w', 'x']]
Get the locations in MultiIndex...
slice(4, 6, None)결과 해석
출력 결과를 보면 첫 번째 레벨에 's' 레이블은 인덱스 4와 5, 즉 두 곳(('s', 'w')과 ('s', 'x'))에 존재합니다. 따라서 get_loc('s')는 개별 정수가 아닌 slice(4, 6, None) 슬라이스 객체를 반환합니다. 만약 레이블이 한 곳에만 존재한다면 해당 위치의 정수 값이 반환됩니다.