MultiIndex에서 각 레벨의 길이를 담은 튜플을 얻으려면 Pandas의 MultiIndex.levshape 속성을 사용하면 됩니다.
levshape 속성이란?
MultiIndex는 pandas 객체에서 사용되는 다중 레벨(계층형) 인덱스 객체입니다. levshape 속성은 각 레벨에 포함된 고유 값의 개수를 튜플 형태로 반환하므로, 복잡한 계층형 인덱스의 구조를 한눈에 파악할 때 매우 유용합니다.
단계별 구현 방법
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
MultiIndex로 만들 배열을 준비합니다. 여기서는 숫자 등급과 학생 이름으로 구성된 두 개의 배열을 사용합니다.
arrays = [[1, 2, 3, 4, 5], ['John', 'Tim', 'Jacob', 'Chris', 'Keiron']]
"names" 매개변수는 각 인덱스 레벨의 이름을 지정합니다. from_arrays() 메서드를 사용해 이 배열들로부터 MultiIndex를 생성합니다.
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))이제 levshape 속성으로 각 레벨의 길이가 담긴 튜플을 출력합니다.
print("\nThe tuple with the length of each level in a Multi-index...\n", multiIndex.levshape)전체 예제 코드
다음은 위 과정을 하나로 정리한 전체 코드입니다.
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의 레벨 수(정수) 확인
print("\nThe number of levels in Multi-index...\n", multiIndex.nlevels)
# MultiIndex의 레벨 목록 확인
print("\nThe levels in Multi-index...\n", multiIndex.levels)
# 각 레벨의 길이가 담긴 튜플 확인
print("\nThe tuple with the length of each level in a Multi-index...\n", multiIndex.levshape)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
The Multi-index...
MultiIndex([(1, 'John'),
(2, 'Tim'),
(3, 'Jacob'),
(4, 'Chris'),
(5, 'Keiron')],
names=['ranks', 'student'])
The number of levels in Multi-index...
2
The levels in Multi-index...
[[1, 2, 3, 4, 5], ['Chris', 'Jacob', 'John', 'Keiron', 'Tim']]
The tuple with the length of each level in a Multi-index...
(5, 5)정리
출력 결과를 보면 첫 번째 레벨(ranks)에는 고유 값이 5개, 두 번째 레벨(student)에도 고유 값이 5개 있으므로 levshape는 (5, 5)라는 튜플을 반환합니다. 참고로 nlevels는 레벨의 개수를 정수로 반환하고, levels는 각 레벨의 실제 고유 값 목록을 반환한다는 점도 함께 기억해두면 좋습니다.