Pandas의 MultiIndex에서 특정 레이블(label) 또는 레벨(level)에 해당하는 위치와 슬라이스 인덱스를 얻으려면 get_loc_level() 메서드를 사용하면 됩니다. 이때 drop_level 매개변수를 False로 설정하면 해당 레벨이 삭제되지 않고 그대로 유지됩니다.
기본 사용법
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
MultiIndex는 pandas 객체에서 사용되는 다중 레벨, 즉 계층적(hierarchical) 인덱스 객체입니다. 아래와 같이 생성할 수 있습니다.
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')], names=['One', 'Two'])생성된 MultiIndex를 출력해 확인합니다.
print("The MultiIndex...\n", multiIndex)이제 위치와 슬라이스 인덱스를 가져옵니다. 레벨이 삭제되지 않도록 하려면 "drop_level" 매개변수에 "False" 값을 지정합니다.
print("\nGet the location and sliced index (avoid dropping the level)...\n", multiIndex.get_loc_level('r', drop_level=False))전체 예제 코드
다음은 위 내용을 모두 포함한 전체 코드입니다.
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)
# 위치 및 슬라이스 인덱스 가져오기
# drop_level 매개변수를 False로 설정하여 레벨이 삭제되지 않도록 합니다
print("\nGet the location and sliced index (avoid dropping the level)...\n", multiIndex.get_loc_level('r', drop_level=False))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
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']]
Get the location and sliced index (avoid dropping the level)...
(slice(2, 4, None), MultiIndex([('r', 'r'),('r', 'v')],names=['One', 'Two']))결과 해석
출력 결과를 보면, 첫 번째 값인 slice(2, 4, None)은 레이블 'r'이 위치한 인덱스 범위(2번째부터 4번째까지)를 나타냅니다. 두 번째 값은 해당 위치에 있는 실제 MultiIndex 항목들인데, drop_level=False로 설정했기 때문에 'One' 레벨이 유지되어 ('r', 'r')과 ('r', 'v')가 그대로 반환된 것을 확인할 수 있습니다.