정확히 일치하는 값이 없을 때 가장 가까운 인덱스 값을 찾아 인덱서를 계산하려면 index.get_indexer() 메서드를 사용합니다. 이때 method 매개변수를 nearest로 설정하면 됩니다.
기본 사용법
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
Pandas 인덱스를 생성합니다.
index = pd.Index([10, 20, 30, 40, 50, 60, 70])
생성된 Pandas 인덱스를 출력합니다.
print("Pandas Index...\n", index)
get_indexer() 메서드를 호출하여 인덱서를 계산합니다. method 매개변수를 "nearest"로 설정하면, 조회하려는 값이 인덱스에 정확히 존재하지 않을 경우 가장 가까운 인덱스 위치를 자동으로 반환합니다.
print("\nGet the indexes...\n", index.get_indexer([30, 25, 58, 50, 69], method="nearest"))
전체 예제 코드
import pandas as pd
# Pandas 인덱스 생성
index = pd.Index([10, 20, 30, 40, 50, 60, 70])
# Pandas 인덱스 출력
print("Pandas Index...\n", index)
# 인덱스의 요소 개수 확인
print("\nNumber of elements in the index...\n", index.size)
# get_indexer()로 인덱서 계산
# method="nearest" 설정 시 정확히 일치하지 않는 값은
# 가장 가까운 인덱스 위치를 반환
print("\nGet the indexes...\n", index.get_indexer([30, 25, 58, 50, 69], method="nearest"))
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Pandas Index...
Int64Index([10, 20, 30, 40, 50, 60, 70], dtype='int64')
Number of elements in the index...
7
Get the indexes...
[2 2 5 4 6]
결과 해석
반환된 인덱스 배열 [2 2 5 4 6]을 살펴보면 다음과 같이 동작합니다.
- 30 → 인덱스에 정확히 존재하므로 해당 위치인 2를 반환
- 25 → 정확한 일치가 없지만 가장 가까운 값(20 또는 30)에 해당하는 2를 반환
- 58 → 가장 가까운 값인 60에 해당하는 5를 반환
- 50 → 정확히 존재하므로 해당 위치인 4를 반환
- 69 → 가장 가까운 값인 70에 해당하는 6을 반환
이처럼 method="nearest" 옵션을 활용하면 조회 대상 값이 인덱스에 없어도 오류 없이 가장 근접한 위치를 손쉽게 얻을 수 있어, 데이터 검색이나 구간 매칭 작업에 유용하게 활용할 수 있습니다.