Pandas에서 특정 레벨(level)이 제거된 인덱스를 반환하려면 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'])레벨 제거하기
레벨을 제거하려면 droplevel() 메서드에 제거하고자 하는 레벨의 위치(정수 인덱스)를 매개변수로 전달합니다. 아래 예제에서는 네 번째 레벨(위치 3)을 제거합니다.
print("\nDropping a level...\n", multiIndex.droplevel(3))참고: 위치 값 대신 레벨 이름을 전달할 수도 있습니다. 예를 들어 multiIndex.droplevel('d')처럼 작성하면 이름 기준으로 레벨을 제거할 수 있어 코드 가독성이 더 좋아집니다.전체 예제 코드
다음은 위 과정을 모두 포함한 완전한 코드입니다.
import pandas as pd
# 멀티인덱스 생성
# names 매개변수는 인덱스 각 레벨의 이름을 지정
multiIndex = pd.MultiIndex.from_arrays([[5, 10], [15, 20], [25, 30], [35, 40]],
names=['a', 'b', 'c', 'd'])
# 멀티인덱스 출력
print("Multindex...\n", multiIndex)
# 레벨 제거
# 제거할 레벨의 위치를 매개변수로 전달
print("\nDropping a level...\n", multiIndex.droplevel(3))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Multindex... MultiIndex([( 5, 15, 25, 35),(10, 20, 30, 40)],names=['a', 'b', 'c', 'd']) Dropping a level... MultiIndex([( 5, 15, 25),(10, 20, 30)],names=['a', 'b', 'c'])
실행 결과를 보면 원래 4개의 레벨(a, b, c, d)을 가졌던 멀티인덱스에서 마지막 레벨 d가 제거되어, 3개의 레벨만 남은 새로운 멀티인덱스가 반환된 것을 확인할 수 있습니다.