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

Python Pandas – MultiIndex에서 레이블 또는 레이블 튜플의 위치 구하기

Pandas의 MultiIndex.get_loc() 메서드를 사용하면 MultiIndex에서 특정 레이블(label) 또는 레이블 튜플(tuple)이 위치한 인덱스를 손쉽게 조회할 수 있습니다. 이 메서드는 레이블이 한 번만 나타나면 정수(int)를, 여러 번 나타나면 슬라이스(slice) 객체를 반환합니다.

필요한 라이브러리 임포트

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

import pandas as pd

MultiIndex 생성하기

MultiIndex는 pandas 객체를 위한 다중 레벨(계층형) 인덱스 객체입니다. pd.MultiIndex.from_arrays()를 사용하면 배열 리스트로부터 간단하게 만들 수 있습니다.

multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('stuvwx')])

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

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

레이블의 위치 조회하기

get_loc() 메서드에 찾고자 하는 레이블을 전달하면 해당 레이블의 위치를 얻을 수 있습니다.

print("\nGet the locations in MultiIndex...\n", multiIndex.get_loc('s'))

예제 전체 코드

지금까지의 내용을 하나로 합친 전체 코드는 다음과 같습니다.

import pandas as pd

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

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

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

# 's' 레이블의 위치 조회
print("\nGet the locations in MultiIndex...\n", multiIndex.get_loc('s'))

실행 결과

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

The MultiIndex...
MultiIndex([('p', 's'),
            ('q', 't'),
            ('r', 'u'),
            ('r', 'v'),
            ('s', 'w'),
            ('s', 'x')],
           )

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

Get the locations in MultiIndex...
   slice(4, 6, None)

결과 해석

출력 결과를 보면 첫 번째 레벨에 's' 레이블은 인덱스 4와 5, 즉 두 곳(('s', 'w')과 ('s', 'x'))에 존재합니다. 따라서 get_loc('s')는 개별 정수가 아닌 slice(4, 6, None) 슬라이스 객체를 반환합니다. 만약 레이블이 한 곳에만 존재한다면 해당 위치의 정수 값이 반환됩니다.