개요
MultiIndex의 각 레벨(level)을 열(column)로 가지는 DataFrame을 생성하려면 multiIndex.to_frame() 메서드를 사용합니다. 이때 index 매개변수를 False로 지정하면, 반환되는 DataFrame에 기존 MultiIndex가 인덱스로 설정되지 않도록 할 수 있습니다.
단계별 구현 방법
먼저 필요한 라이브러리를 가져옵니다.
import pandas as pd
MultiIndex는 pandas 객체를 위한 다중 레벨(계층형) 인덱스 객체입니다. 먼저 배열을 생성합니다.
arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]
names 매개변수는 각 인덱스 레벨의 이름을 지정하며, from_arrays()를 사용하여 MultiIndex를 생성합니다.
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))to_frame()을 사용해 MultiIndex의 레벨들을 열로 가지는 DataFrame을 만듭니다. 여기서 index 매개변수를 False로 설정하면 반환되는 DataFrame에 인덱스가 별도로 설정되지 않습니다.
dataFrame = multiIndex.to_frame(index=False)
전체 예제 코드
import pandas as pd
# MultiIndex는 pandas 객체를 위한 다중 레벨(계층형) 인덱스 객체입니다
# 배열 생성
arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]
# "names" 매개변수는 각 인덱스 레벨의 이름을 설정합니다
# from_arrays()를 사용해 MultiIndex를 생성합니다
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
# MultiIndex 출력
print("The Multi-index...\n", multiIndex)
# MultiIndex의 레벨 확인
print("\nThe levels in Multi-index...\n", multiIndex.levels)
# to_frame()으로 MultiIndex의 레벨들을 열로 가지는 DataFrame 생성
# index 매개변수를 False로 설정하여 반환되는 DataFrame에 인덱스가 설정되지 않도록 합니다
dataFrame = multiIndex.to_frame(index=False)
# DataFrame 반환 및 출력
print("\nThe DataFrame...\n", dataFrame)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
The Multi-index...
MultiIndex([(1, 'John'),
(2, 'Tim'),
(3, 'Jacob'),
(4, 'Chris')],
names=['ranks', 'student'])
The levels in Multi-index...
[[1, 2, 3, 4], ['Chris', 'Jacob', 'John', 'Tim']]
The DataFrame...
ranks student
0 1 John
1 2 Tim
2 3 Jacob
3 4 Chris핵심 정리
to_frame()은 MultiIndex의 각 레벨을 열로 변환하는 편리한 메서드입니다. 기본값인 index=True를 사용하면 원래의 MultiIndex가 그대로 DataFrame의 인덱스로 유지되지만, index=False로 설정하면 일반적인 정수 범위 인덱스(RangeIndex)가 적용되어 데이터만 깔끔하게 활용할 수 있습니다.