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

Python Pandas - get_loc_level()로 요청된 레이블/레벨의 위치 및 슬라이스 인덱스 구하기 (drop_level=False)

Pandas의 MultiIndex에서 특정 레이블(label) 또는 레벨(level)에 해당하는 위치와 슬라이스 인덱스를 얻으려면 get_loc_level() 메서드를 사용하면 됩니다. 이때 drop_level 매개변수를 False로 설정하면 해당 레벨이 삭제되지 않고 그대로 유지됩니다.

기본 사용법

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

import pandas as pd

MultiIndex는 pandas 객체에서 사용되는 다중 레벨, 즉 계층적(hierarchical) 인덱스 객체입니다. 아래와 같이 생성할 수 있습니다.

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

생성된 MultiIndex를 출력해 확인합니다.

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

이제 위치와 슬라이스 인덱스를 가져옵니다. 레벨이 삭제되지 않도록 하려면 "drop_level" 매개변수에 "False" 값을 지정합니다.

print("\nGet the location and sliced index (avoid dropping the level)...\n", multiIndex.get_loc_level('r', drop_level=False))

전체 예제 코드

다음은 위 내용을 모두 포함한 전체 코드입니다.

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)

# 위치 및 슬라이스 인덱스 가져오기
# drop_level 매개변수를 False로 설정하여 레벨이 삭제되지 않도록 합니다
print("\nGet the location and sliced index (avoid dropping the level)...\n", multiIndex.get_loc_level('r', drop_level=False))

실행 결과

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

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']]

Get the location and sliced index (avoid dropping the level)...
(slice(2, 4, None), MultiIndex([('r', 'r'),('r', 'v')],names=['One', 'Two']))

결과 해석

출력 결과를 보면, 첫 번째 값인 slice(2, 4, None)은 레이블 'r'이 위치한 인덱스 범위(2번째부터 4번째까지)를 나타냅니다. 두 번째 값은 해당 위치에 있는 실제 MultiIndex 항목들인데, drop_level=False로 설정했기 때문에 'One' 레벨이 유지되어 ('r', 'r')('r', 'v')가 그대로 반환된 것을 확인할 수 있습니다.