Skip to main content
집계 테이블, 피벗 테이블, 시계열 리포트에서는 MultiIndex가 자주 등장합니다. 핵심은 인덱스 레벨 순서를 고정하고, locxs를 역할별로 나눠 쓰는 것입니다.

MultiIndex 생성

import pandas as pd

df = pd.DataFrame(
    {
        "region": ["seoul", "seoul", "busan", "busan"],
        "segment": ["A", "B", "A", "B"],
        "sales": [120, 140, 90, 110],
    }
)

m = df.set_index(["region", "segment"]).sort_index()

접근 패턴

# 1단계 키 선택
seoul = m.loc["seoul"]

# 2단계 키 선택
seoul_a = m.loc[("seoul", "A")]

# xs: 특정 레벨 단면 조회
seg_a = m.xs("A", level="segment")

슬라이싱

idx = pd.IndexSlice
part = m.loc[idx["busan":"seoul", :], :]

레벨 재배치

# 레벨 순서 변경
m2 = m.swaplevel("region", "segment").sort_index()

# 인덱스를 컬럼으로 복원
flat = m.reset_index()

운영 관점 팁

  • MultiIndex를 오래 유지할수록 팀 내 가독성이 떨어질 수 있습니다.
  • 모델 입력 전 단계에서는 reset_index()로 평탄화한 표를 유지하는 편이 안전합니다.

이어서 볼 문서