Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – MultiIndex의 레벨을 열로 사용해 DataFrame 생성하기(index=False로 반환 DataFrame의 인덱스 설정 방지)

개요

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)가 적용되어 데이터만 깔끔하게 활용할 수 있습니다.