본문 바로가기
파이썬(Python)

파이썬-피봇테이블(pivot_table) 컬럼 변경하기

by 즐거운코딩 2025. 8. 13.
반응형

데이터프레임으로 가장 많이 변환하여 사용하는 것으로 피봇테이블이 있습니다.

다양하게 통계성 데이터를 만들어 볼 수 있는데 결과값을 보고용으로 그대로 사용하기에는 깔끔하지 않은 경우가 많아서 적절하게 컬럼명 변경이 필요합니다.

 

다음과 같은 경우 참조하시면 보고서 작성시 도움이 될 겁니다.

 

예시를 들어 설명하겠습니다.

 

pandas.pivot_table()을 사용할 때 aggfunc='sum' 등으로 집계를 하면 결과의 컬럼 이름이 다중 인덱스(MultiIndex) 형태로 나와서 첫 줄이 함수명(sum), 두 번째 줄이 실제 컬럼명이 됩니다.

이럴 때는 .pivot_table() 이후 .columns를 평탄화(flatten)하면 됩니다.


✅ 문제 예시:

import pandas as pd

df = pd.DataFrame({
    '지역': ['서울', '서울', '부산', '부산'],
    '품목': ['A', 'B', 'A', 'B'],
    '매출': [100, 200, 150, 250]
})

pivot = pd.pivot_table(df, index='지역', columns='품목', values='매출', aggfunc='sum')
print(pivot)

🔸 출력:

품목     A    B
지역           
부산   150  250
서울   100  200

실제로는 pivot.columns이 MultiIndex로 되어 있습니다. (level_0: sum, level_1: 품목)


✅ 해결 방법:
.columns = columns.get_level_values(1) 또는 .columns = [col[1] for col in pivot.columns]

pivot.columns = pivot.columns.get_level_values(0)  # 또는 get_level_values(1)

 

혹은 다중 컬럼명을 문자열로 변환해서 단일 인덱스로:

pivot.columns = [col if isinstance(col, str) else col[1] for col in pivot.columns]

✅ 전체 예제 정리:

import pandas as pd

df = pd.DataFrame({
    '지역': ['서울', '서울', '부산', '부산'],
    '품목': ['A', 'B', 'A', 'B'],
    '매출': [100, 200, 150, 250]
})

pivot = pd.pivot_table(df, index='지역', columns='품목', values='매출', aggfunc='sum')

# 다중 컬럼 해제
pivot.columns = pivot.columns.get_level_values(0)

print(pivot)

📌 요약

방법 설명

.columns.get_level_values(n) MultiIndex의 특정 레벨만 추출
[col[1] for col in columns] 튜플에서 원하는 값만 추출
.reset_index() 인덱스 초기화 (필요시)

필요에 따라 원하는 방식으로 사용하시면 됩니다.

반응형