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

Python Pandas – 레벨 이름을 사용해 MultiIndex에서 레벨 제거하기

Pandas에서 multiIndex.droplevel() 메서드를 사용하면 레벨의 이름을 기준으로 해당 레벨을 제거한 새로운 인덱스를 반환할 수 있습니다. 이 메서드의 매개변수에 제거하려는 레벨의 이름을 지정하면 됩니다.

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

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

import pandas as pd

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

이제 멀티 인덱스를 생성합니다. 이때 names 매개변수를 사용하면 인덱스의 각 레벨에 이름을 부여할 수 있습니다.

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

3. 멀티 인덱스 출력하기

생성된 멀티 인덱스를 화면에 표시해 보겠습니다.

print("Multi-index...\n", multiIndex)

4. 레벨 이름으로 레벨 제거하기

레벨 이름을 사용하여 레벨을 제거합니다. 여기서는 제거하려는 레벨의 이름인 'b'를 매개변수로 전달했습니다.

print("\nDropping a level...\n", multiIndex.droplevel('b'))

전체 예제 코드

지금까지 설명한 내용을 하나로 정리한 전체 코드는 다음과 같습니다.

import pandas as pd

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

# 멀티 인덱스 출력
print("Multi-index...\n", multiIndex)

# 레벨 이름을 사용하여 레벨 제거
# 제거할 레벨의 이름을 매개변수로 전달
print("\nDropping a level...\n", multiIndex.droplevel('b'))

실행 결과

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

Multi-index...
MultiIndex([( 5, 15, 25, 35),(10, 20, 30, 40)],names=['a', 'b', 'c', 'd'])

Dropping a level...
MultiIndex([( 5, 25, 35),(10, 30, 40)],names=['a', 'c', 'd'])

출력 결과를 보면, 레벨 이름 'b'가 제거되고 나머지 레벨들인 'a', 'c', 'd'만 남은 새로운 MultiIndex가 반환된 것을 확인할 수 있습니다. 참고로 droplevel()은 원본 인덱스를 변경하지 않고 새로운 인덱스 객체를 반환하며, 레벨 이름 대신 레벨의 위치(정수 인덱스)를 매개변수로 전달하는 방법도 가능합니다.