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

Python Pandas – droplevel()로 멀티인덱스에서 특정 레벨을 제거한 인덱스 반환하기

Pandas에서 MultiIndex 객체의 특정 레벨을 제거하고 그 결과를 새 인덱스로 반환하려면 multiIndex.droplevel() 메서드를 사용합니다. 이 메서드는 지정된 레벨(또는 여러 레벨)이 삭제된 새로운 MultiIndex를 생성하며, 원본 인덱스는 변경되지 않습니다.

1. 필요한 라이브러리 임포트

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

import pandas as pd

2. 멀티인덱스(MultiIndex) 생성

pd.MultiIndex.from_arrays() 메서드를 사용해 배열 리스트로부터 멀티인덱스를 만듭니다. 이때 names 매개변수를 지정하면 각 인덱스 레벨에 이름을 부여할 수 있어 이후 작업 시 가독성과 편의성이 크게 향상됩니다.

multiIndex = pd.MultiIndex.from_arrays([[5, 10], [15, 20], [25, 30], [35, 40]],
                                       names=['a', 'b', 'c', 'd'])

위 코드는 4개의 레벨(a, b, c, d)을 가진 멀티인덱스를 생성합니다.

3. 레벨 제거하기

droplevel() 메서드를 호출하면 기본적으로 첫 번째 레벨(level 0)이 제거됩니다. 특정 레벨을 제거하려면 레벨 이름 또는 정수 위치를 인자로 전달하면 됩니다.

print("\n레벨 제거 결과...\n", multiIndex.droplevel())

전체 예제 코드

import pandas as pd

# 멀티인덱스 생성
# names 매개변수는 인덱스의 각 레벨에 이름을 설정합니다.
multiIndex = pd.MultiIndex.from_arrays([[5, 10], [15, 20], [25, 30], [35, 40]],
                                       names=['a', 'b', 'c', 'd'])

print("멀티인덱스...\n", multiIndex)

# 멀티인덱스에서 첫 번째 레벨 제거
print("\n레벨 제거 결과...\n", multiIndex.droplevel())

실행 결과

위 코드를 실행하면 다음과 같은 출력이 나타납니다.

멀티인덱스...
MultiIndex([( 5, 15, 25, 35),
            (10, 20, 30, 40)],
           names=['a', 'b', 'c', 'd'])

레벨 제거 결과...
MultiIndex([(15, 25, 35),
            (20, 30, 40)],
           names=['b', 'c', 'd'])

핵심 포인트 정리

  • droplevel()은 인자 없이 호출하면 첫 번째 레벨(level 0)이 자동으로 제거됩니다.
  • 출력 결과를 보면 'a' 레벨이 사라지고 나머지 레벨(b, c, d)만 남은 새로운 MultiIndex가 반환됩니다.
  • 여러 레벨을 한 번에 제거하려면 multiIndex.droplevel(['a', 'b'])처럼 리스트로 전달할 수 있습니다.
  • 원본 멀티인덱스는 수정되지 않으며, 항상 새로운 인덱스 객체가 반환됩니다.