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

Python Pandas – MultiIndex에서 레벨 이름을 활용해 특정 단일 레벨만 새로 설정하는 방법

MultiIndex에서 레벨 이름을 기준으로 하나의 특정 레벨만 새로 설정하려면 MultiIndex.set_levels() 메서드를 사용하면 됩니다. 이때 level 매개변수에 대상 레벨의 이름을 지정하여 해당 레벨만 선택적으로 변경할 수 있습니다.

필요한 라이브러리 가져오기

먼저 pandas 라이브러리를 임포트합니다.

import pandas as pd

MultiIndex는 pandas 객체를 위한 다중 레벨(계층형) 인덱스 객체입니다. 인덱스로 사용할 배열을 생성해 보겠습니다.

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

MultiIndex 생성하기

names 매개변수는 각 인덱스 레벨에 이름을 부여합니다. from_arrays() 메서드를 사용하면 배열로부터 MultiIndex를 만들 수 있습니다.

multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

특정 레벨만 새로 설정하기

이제 MultiIndex에서 레벨을 변경해 보겠습니다. level 매개변수에 레벨 이름인 'student'를 지정함으로써, 해당 레벨만 새로운 값으로 교체했습니다.

print("\nSet a new level in Multi-index...\n",multiIndex.set_levels(['Emma', 'Angelina', 'Scarlett', 'Jeni'], level = 'student'))

전체 예제 코드

다음은 위 과정을 모두 포함한 전체 코드입니다.

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)

# MultiIndex에서 레벨 설정
# "level" 매개변수에 레벨 이름을 지정하여 특정 단일 레벨만 새로 설정
print("\nSet a new level in Multi-index...\n",multiIndex.set_levels(['Emma', 'Angelina', 'Scarlett', 'Jeni'], level = 'student'))

실행 결과

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

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']]

Set a new level in Multi-index...
MultiIndex([(1, 'Scarlett'),
            (2,     'Jeni'),
            (3, 'Angelina'),
            (4,     'Emma')],
            names=['ranks', 'student'])

출력 결과를 보면 'ranks' 레벨은 그대로 유지되고, 레벨 이름으로 지정한 'student' 레벨만 새로운 값들로 성공적으로 교체된 것을 확인할 수 있습니다. 이처럼 set_levels() 메서드와 level 매개변수를 함께 사용하면 전체 레벨을 수정하지 않고도 원하는 레벨만 효율적으로 변경할 수 있습니다.