Pandas에서 MultiIndex에 포함된 각 레이블의 위치(코드)를 확인하려면 MultiIndex.codes 속성을 사용하면 됩니다. 이 속성은 계층형 인덱스 내에서 각 레이블이 몇 번째 위치에 해당하는지 정수 코드 형태로 반환해 줍니다.
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
MultiIndex 생성하기
MultiIndex는 pandas 객체를 위해 사용되는 다중 레벨(계층형) 인덱스 객체입니다. 예제에서 사용할 배열을 먼저 만들어 보겠습니다.
arrays = [[1, 2, 3, 4, 5], ['John', 'Tim', 'Jacob', 'Chris', 'Keiron']]
from_arrays() 메서드를 사용하면 배열로부터 MultiIndex를 생성할 수 있으며, 이때 names 매개변수를 통해 각 인덱스 레벨의 이름을 지정할 수 있습니다.
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))생성된 MultiIndex에서 각 레이블의 위치는 다음과 같이 codes 속성으로 확인합니다.
print("\nThe location of each label in Multi-index...\n", multiIndex.codes)전체 예제 코드
아래는 지금까지 설명한 내용을 모두 포함한 전체 코드입니다.
import pandas as pd
# MultiIndex는 pandas 객체를 위한 다중 레벨(계층형) 인덱스 객체입니다
# 배열 생성
arrays = [[1, 2, 3, 4, 5], ['John', 'Tim', 'Jacob', 'Chris', 'Keiron']]
# names 매개변수로 각 인덱스 레벨의 이름을 지정하고
# from_arrays() 메서드로 MultiIndex를 생성합니다
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
# MultiIndex 출력
print("The Multi-index...\n", multiIndex)
# MultiIndex의 레벨(levels) 확인
print("\nThe levels in Multi-index...\n", multiIndex.levels)
# MultiIndex에서 각 레이블의 위치(codes) 확인
print("\nThe location of each label in Multi-index...\n", multiIndex.codes)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
The Multi-index...
MultiIndex([(1, 'John'),
(2, 'Tim'),
(3, 'Jacob'),
(4, 'Chris'),
(5, 'Keiron')],
names=['ranks', 'student'])
The levels in Multi-index...
[[1, 2, 3, 4, 5], ['Chris', 'Jacob', 'John', 'Keiron', 'Tim']]
The location of each label in Multi-index...
[[0, 1, 2, 3, 4], [2, 4, 1, 0, 3]]결과 해석
출력 결과를 보면 levels는 각 레벨에 포함된 고유한 값들을 정렬된 순서로 저장하고 있습니다. 학생 이름 레벨은 사전순으로 정렬되어 ['Chris', 'Jacob', 'John', 'Keiron', 'Tim']이 되며, codes는 원래 데이터가 이 정렬된 레벨 중 어떤 위치의 값을 참조하는지를 나타냅니다. 예를 들어 첫 번째 행의 'John'은 정렬된 목록에서 인덱스 2번째에 해당하므로 코드값 2가 출력되는 것입니다.