Pandas에서 MultiIndex의 레벨 순서를 변경하려면 MultiIndex.reorder_levels() 메서드를 사용하면 됩니다. 이때 order 매개변수에 원하는 레벨 순서를 지정하여 계층 구조를 자유롭게 재배치할 수 있습니다.
필요한 라이브러리 불러오기
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
MultiIndex란?
MultiIndex는 pandas 객체에서 사용되는 다중 레벨(계층적) 인덱스 객체입니다. 하나의 인덱스에 여러 개의 수준을 두어 복잡한 데이터를 체계적으로 관리할 수 있도록 도와줍니다.
예제에서 사용할 배열을 생성해 보겠습니다.
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]
MultiIndex 생성하기
names 매개변수는 각 인덱스 레벨의 이름을 지정하는 역할을 합니다. 그리고 from_arrays() 메서드를 사용하면 배열로부터 MultiIndex를 생성할 수 있습니다.
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))레벨 재정렬하기
이제 MultiIndex의 레벨을 재정렬해 보겠습니다. order 매개변수에 원하는 레벨의 순서를 리스트 형태로 전달하면 됩니다. 아래 예제에서는 기존 순서(rank, student, points)를 points → rank → student 순으로 변경합니다.
print("\nReorder levels in MultiIndex...\n", multiIndex.reorder_levels(order=[2, 0, 1]))전체 예제 코드
다음은 지금까지 설명한 내용을 모두 포함한 전체 코드입니다.
import pandas as pd
# MultiIndex는 pandas 객체를 위한 다중 레벨(계층적) 인덱스 객체입니다
# 배열 생성
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]
# names 매개변수는 각 인덱스 레벨의 이름을 설정합니다
# from_arrays()를 사용하여 MultiIndex 생성
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))
# MultiIndex 출력
print("The MultiIndex...\n", multiIndex)
# MultiIndex의 레벨 확인
print("\nThe levels in MultiIndex...\n", multiIndex.levels)
# MultiIndex의 레벨 재정렬
# order 매개변수로 레벨 순서를 지정합니다
print("\nReorder levels in MultiIndex...\n", multiIndex.reorder_levels(order=[2, 0, 1]))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
The MultiIndex...
MultiIndex([(2, 'Peter', 50),
(4, 'Chris', 30),
(3, 'Andy', 40),
(1, 'Jacob', 70)],
names=['rank', 'student', 'points'])
The levels in MultiIndex...
[[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter'], [30, 40, 50, 70]]
Reorder levels in MultiIndex...
MultiIndex([(50, 2, 'Peter'),
(30, 4, 'Chris'),
(40, 3, 'Andy'),
(70, 1, 'Jacob')],
names=['points', 'rank', 'student'])정리
실행 결과를 보면, 원래 rank → student → points 순서였던 인덱스가 order=[2, 0, 1] 옵션에 따라 points → rank → student 순서로 성공적으로 재배열된 것을 확인할 수 있습니다. 이처럼 reorder_levels() 메서드를 활용하면 MultiIndex의 계층 구조를 데이터 분석 목적에 맞게 손쉽게 조정할 수 있습니다.