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

Python Pandas – 데이터프레임의 인덱스를 다중 인덱스(MultiIndex)로 표시하는 방법

Pandas에서 데이터프레임의 인덱스를 다중 인덱스(MultiIndex) 형태로 표시하려면 set_index() 메서드를 사용해 열을 인덱스로 지정한 뒤, dataframe.index 속성으로 결과를 확인하면 됩니다. 특히 append=True 옵션을 사용하면 기존 인덱스를 유지하면서 새로운 인덱스가 추가되어 다중 인덱스가 생성됩니다.

1단계: 딕셔너리(사전형) 데이터 준비

먼저 리스트 값으로 구성된 딕셔너리를 만듭니다.

# 리스트로 구성된 딕셔너리
d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
     'Date_of_purchase': ['2020-10-10', '2020-10-12', '2020-10-17',
                          '2020-10-16', '2020-10-19', '2020-10-22']}

2단계: 데이터프레임 생성

위에서 만든 딕셔너리를 이용해 데이터프레임을 생성합니다.

dataFrame = pd.DataFrame(d)

3단계: 인덱스 열 설정 후 다중 인덱스 확인

"Car" 열을 인덱스로 지정하고, dataframe.index를 출력해 다중 인덱스를 확인합니다.

dataFrame.set_index(["Car"], inplace=True, append=True, drop=False)
print("\n다중 인덱스...\n", dataFrame.index)

주요 파라미터 설명

  • inplace=True: 원본 데이터프레임을 직접 수정합니다.
  • append=True: 기존 정수 인덱스를 유지한 채 "Car" 인덱스를 추가하여 MultiIndex를 구성합니다.
  • drop=False: 인덱스로 지정된 "Car" 열을 데이터에서 삭제하지 않고 그대로 유지합니다.

전체 예제 코드

import pandas as pd

# 리스트로 구성된 딕셔너리
d = {'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
     'Date_of_purchase': ['2020-10-10', '2020-10-12', '2020-10-17',
                          '2020-10-16', '2020-10-19', '2020-10-22']}

# 딕셔너리로부터 데이터프레임 생성
dataFrame = pd.DataFrame(d)
print("DataFrame...\n", dataFrame)

# 인덱스 열 설정
dataFrame.set_index(["Car"], inplace=True,
                    append=True, drop=False)

print("\nMultiindex...\n", dataFrame.index)

실행 결과

위 코드를 실행하면 아래와 같은 출력이 나타납니다.

DataFrame...
         Car Date_of_purchase
0       BMW       2020-10-10
1      Lexus      2020-10-12
2       Audi      2020-10-17
3   Mercedes      2020-10-16
4     Jaguar      2020-10-19
5    Bentley      2020-10-22

Multiindex...
MultiIndex(levels=[[0, 1, 2, 3, 4, 5],
                   ['Audi', 'BMW', 'Bentley', 'Jaguar', 'Lexus', 'Mercedes']],
           labels=[[0, 1, 2, 3, 4, 5], [1, 4, 0, 5, 3, 2]],
           names=[None, 'Car'])

출력 결과에서 볼 수 있듯이, 기존의 숫자 인덱스(0~5)와 "Car" 열이 함께 계층적으로 구성되어 MultiIndex 객체로 표시됩니다. 이처럼 set_index()append 옵션만 잘 활용하면 간단하게 다중 인덱스를 만들 수 있습니다.