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

Python Pandas – MultiIndex에서 레벨의 정수 위치로 레이블 값 벡터 반환하기

MultiIndex에서 특정 레벨의 정수 위치(레벨 번호)를 사용하여 해당 레벨의 레이블 값을 벡터 형태로 반환하려면, Pandas의 MultiIndex.get_level_values() 메서드를 사용합니다. 이 메서드를 호출할 때 인자로 원하는 레벨을 지정하면 됩니다.

기본 사용법

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

import pandas as pd

MultiIndex는 pandas 객체에서 사용되는 다중 레벨(계층형) 인덱스 객체입니다. 다음과 같이 생성할 수 있습니다.

multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')], names=['One', 'Two'])

생성된 MultiIndex를 화면에 출력해 보겠습니다.

print("The MultiIndex...\n", multiIndex)

이제 레벨 0의 레이블 값을 가져와 보겠습니다.

print("\nLevel values at level 0...\n", multiIndex.get_level_values(0))

전체 예제 코드

다음은 지금까지 설명한 내용을 모두 포함한 완성된 코드입니다.

import pandas as pd

# MultiIndex는 pandas 객체를 위한 다중 레벨(계층형) 인덱스 객체입니다.
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')], names=['One', 'Two'])

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

# MultiIndex의 레벨 정보 확인
print("\nThe levels in MultiIndex...\n", multiIndex.levels)

# 레벨 0의 레이블 값 가져오기
print("\nLevel values at level 0...\n", multiIndex.get_level_values(0))

실행 결과

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

The MultiIndex...
MultiIndex([('p', 's'),
            ('q', 't'),
            ('r', 'r'),
            ('r', 'v'),
            ('s', 'w'),
            ('s', 'x')],
            names=['One', 'Two'])

The levels in MultiIndex...
   [['p', 'q', 'r', 's'], ['r', 's', 't', 'v', 'w', 'x']]

Level values at level 0...
   Index(['p', 'q', 'r', 'r', 's', 's'], dtype='object', name='One')

정리

get_level_values() 메서드에 정수 위치(0부터 시작)를 전달하면, 해당 레벨의 각 항목에 대응하는 레이블 값들이 Index 객체 형태의 벡터로 반환됩니다. 위 예제에서 레벨 0을 지정했더니 첫 번째 배열의 값들이 순서대로 반복 없이 그대로 유지된 채 반환된 것을 확인할 수 있습니다. 참고로 레벨 이름(name)도 함께 유지되므로, 계층형 데이터 분석 시 특정 레벨의 값만 추출하여 활용하기 매우 편리합니다.