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

Python Pandas – MultiIndex의 레벨을 열로 사용해 DataFrame 생성하고 인덱스 레벨 이름 바꾸기


pandas에서 MultiIndex의 각 레벨(수준)을 열(column)로 사용하는 DataFrame을 만들려면 MultiIndex.to_frame() 메서드를 사용하면 됩니다. 또한 name 매개변수를 활용하면 기존 인덱스 레벨 이름을 원하는 이름으로 손쉽게 대체할 수 있습니다.

기본 사용 방법

먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd

MultiIndex는 pandas 객체를 위한 다중 레벨, 즉 계층적(hierarchical) 인덱스 객체입니다. 예제에 사용할 배열을 다음과 같이 생성합니다.

arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]

from_arrays() 메서드는 배열을 기반으로 MultiIndex를 생성합니다. 참고로 "names" 매개변수를 함께 사용하면 각 인덱스 레벨에 이름을 지정할 수도 있습니다.

multiIndex = pd.MultiIndex.from_arrays(arrays)

to_frame()을 호출하면 MultiIndex의 레벨들이 열로 변환된 DataFrame이 만들어집니다. 이때 "name" 매개변수에 새 이름 리스트를 전달하면 인덱스 레벨 이름이 해당 이름으로 대체됩니다.

dataFrame = multiIndex.to_frame(name=['One', 'Two'])

예제 코드

다음은 전체 실행 코드입니다.

import pandas as pd

# MultiIndex는 pandas 객체를 위한 다중 레벨(계층적) 인덱스 객체입니다
# 배열 생성
arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]

# from_arrays()를 사용해 MultiIndex 생성
multiIndex = pd.MultiIndex.from_arrays(arrays)

# MultiIndex 출력
print("The Multi-index...\n", multiIndex)

# MultiIndex의 레벨 확인
print("\nThe levels in Multi-index...\n", multiIndex.levels)

# to_frame()으로 MultiIndex의 레벨을 열로 하는 DataFrame 생성
# name 매개변수에 새 이름을 전달해 인덱스 레벨 이름 대체
dataFrame = multiIndex.to_frame(name=['One', 'Two'])

# DataFrame 출력
print("\nThe DataFrame...\n", dataFrame)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

The Multi-index...
MultiIndex([(1, 'John'),
            (2, 'Tim'),
            (3, 'Jacob'),
            (4, 'Chris')],
           )

The levels in Multi-index...
[[1, 2, 3, 4], ['Chris', 'Jacob', 'John', 'Tim']]

The DataFrame...
          One   Two
1  John     1  John
2  Tim      2   Tim
3  Jacob    3 Jacob
4  Chris    4 Chris