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

Python Pandas – 레벨 이름으로 여러 레벨을 제거한 MultiIndex 반환하기

pandas에서 MultiIndex.droplevel() 메서드를 사용하면 MultiIndex에서 여러 개의 레벨을 한 번에 제거할 수 있습니다. 이때 제거하려는 레벨들을 레벨 이름(level name) 형태로 인자에 지정하면 됩니다.

기본 사용 방법

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

import pandas as pd

MultiIndex는 pandas 객체를 위한 다중 레벨(계층형) 인덱스 객체입니다. 예제에서 사용할 배열을 먼저 생성합니다.

arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]

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

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

이제 MultiIndex에서 특정 레벨들을 제거해 보겠습니다. 제거할 레벨은 레벨 이름으로 지정하며, 아래 예시에서는 'rank'와 'student' 두 개의 레벨이 삭제됩니다.

print("\n두 개의 레벨을 제거한 후의 Multi-index...\n",multiIndex.droplevel(['rank', 'student']))

전체 예제 코드

지금까지 설명한 내용을 모두 포함한 전체 코드는 다음과 같습니다.

import pandas as pd

# MultiIndex는 pandas 객체를 위한 다중 레벨(계층형) 인덱스 객체입니다.
# 예제용 배열 생성
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]

# "names" 매개변수로 각 인덱스 레벨의 이름 설정
# from_arrays()를 사용해 MultiIndex 생성
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))

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

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

# MultiIndex에서 특정 레벨 제거
# 제거할 레벨을 레벨 이름으로 지정, 즉 'rank'와 'student' 레벨이 삭제됨
print("\n두 개의 레벨을 제거한 후의 Multi-index...\n",multiIndex.droplevel(['rank', 'student']))

실행 결과

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

The Multi-index...
MultiIndex([(2, 'Peter', 50),
            (4, 'Chris', 30),
            (3,  'Andy', 40),
            (1, 'Jacob', 70)],
            names=['rank', 'student', 'points'])

The levels in Multi-index...
   [[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter'], [30, 40, 50, 70]]

두 개의 레벨을 제거한 후의 Multi-index...
   Int64Index([50, 30, 40, 70], dtype='int64', name='points')