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

Python Pandas – 요청한 레이블의 정수 위치 구하기: 정확한 일치가 없을 때 가장 가까운 인덱스 값 찾는 방법

Pandas에서 요청한 레이블(값)에 해당하는 정수 위치(integer location)를 구할 때 index.get_loc() 메서드를 사용합니다. 만약 정확히 일치하는 값이 인덱스에 존재하지 않는다면, method 매개변수를 "nearest"로 설정하여 가장 가까운 인덱스 값의 위치를 자동으로 찾을 수 있습니다.

get_loc() 메서드 이해하기

get_loc()은 주어진 레이블이 인덱스에서 몇 번째 위치에 있는지 정수 형태로 반환합니다. 기본적으로 정확한 일치만 허용하지만, method 매개변수에 다음과 같은 값을 지정하면 근사 검색이 가능합니다.

  • nearest – 가장 가까운 값의 위치를 반환합니다.
  • pad / ffill – 이전 값 중 일치하는 것이 있으면 그 위치를 반환합니다.
  • backfill / bfill – 다음 값 중 일치하는 것이 있으면 그 위치를 반환합니다.

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

import pandas as pd

1단계: Pandas 인덱스 생성

index = pd.Index([10, 20, 30, 40, 50, 60, 70])

2단계: 생성한 인덱스 출력

print("Pandas Index...\n", index)

3단계: 정확한 일치가 없을 때 가장 가까운 인덱스 위치 찾기

get_loc()method 매개변수에 "nearest"를 설정하면, 존재하지 않는 값(예: 58)에 대해서도 가장 가까운 인덱스 값의 위치를 얻을 수 있습니다.

print("\n정확한 일치가 없을 때 가장 가까운 인덱스 위치...\n", index.get_loc(58, method="nearest"))

전체 예제 코드

아래는 위 과정을 모두 포함한 완성된 코드입니다.

import pandas as pd

# Pandas 인덱스 생성
index = pd.Index([10, 20, 30, 40, 50, 60, 70])

# Pandas 인덱스 출력
print("Pandas Index...\n", index)

# 인덱스에 포함된 요소 개수 확인
print("\n인덱스의 요소 개수...\n", index.size)

# 주어진 레이블로부터 정수 위치 구하기
print("\n주어진 인덱스의 정수 위치...\n", index.get_loc(20))
print("\n주어진 인덱스의 정수 위치...\n", index.get_loc(50))

# 정확한 일치가 없을 때 가장 가까운 인덱스 위치 구하기
# get_loc()의 method 매개변수에 "nearest"를 설정
print("\n정확한 일치가 없을 때 가장 가까운 인덱스 위치...\n", index.get_loc(58, method="nearest"))

실행 결과

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

Pandas Index...
Int64Index([10, 20, 30, 40, 50, 60, 70], dtype='int64')

인덱스의 요소 개수...
7

주어진 인덱스의 정수 위치...
1

주어진 인덱스의 정수 위치...
4

정확한 일치가 없을 때 가장 가까운 인덱스 위치...
5

결과 해석

출력 결과를 보면, 레이블 20은 위치 1(0부터 시작), 레이블 50은 위치 4에 해당함을 알 수 있습니다. 특히 인덱스에 존재하지 않는 값 58을 검색했을 때, method="nearest" 덕분에 오류 없이 60(위치 5)이 가장 가까운 값으로 판별되어 해당 위치가 반환됩니다. 이처럼 get_loc()method 옵션을 활용하면 데이터 탐색 시 유연하게 근사 위치 검색을 처리할 수 있습니다.