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

Python Pandas – get_indexer()로 인덱서 계산하기: 정확히 일치하지 않을 때 이전 인덱스 값 찾는 방법

Pandas에서 정확히 일치하는 값이 없을 경우 이전(앞쪽) 인덱스 값을 찾으려면 index.get_indexer() 메서드를 사용하고, method 매개변수를 ffill(forward fill)로 설정하면 됩니다. 이 방식은 조회하려는 값이 인덱스에 존재하지 않을 때, 해당 값보다 작거나 같은 가장 가까운 인덱스의 위치를 자동으로 반환해 줍니다.

1단계: 필요한 라이브러리 가져오기

먼저 Pandas 라이브러리를 임포트합니다.

import pandas as pd

2단계: Pandas 인덱스 생성하기

예제에 사용할 인덱스를 생성합니다.

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

생성된 인덱스를 화면에 출력해 확인합니다.

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

3단계: get_indexer()로 인덱서 계산하기

get_indexer() 메서드를 호출하여 인덱서를 계산합니다. 이때 method 매개변수를 "ffill"로 설정하면, 정확히 일치하는 값이 없을 때 이전 인덱스 값의 위치를 찾아줍니다.

print("\nGet the indexes...\n", index.get_indexer([30, 20, 75, 80, 50, 59], method="ffill"))

전체 예제 코드

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

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="ffill" : 정확히 일치하지 않으면 이전 인덱스 값 사용
print("\nGet the indexes...\n", index.get_indexer([30, 20, 75, 80, 50, 59], method="ffill"))

실행 결과

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

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

Number of elements in the index...
7

Get the indexes...
[2 1 6 6 4 4]

결과 해석

출력된 [2 1 6 6 4 4]의 의미를 살펴보면 다음과 같습니다.

  • 30 → 2: 인덱스에 정확히 존재하므로 해당 위치 2를 반환
  • 20 → 1: 정확히 일치하므로 위치 1 반환
  • 75 → 6: 일치하는 값이 없으므로 75보다 작거나 같은 가장 가까운 값인 70의 위치 6 반환
  • 80 → 6: 마찬가지로 이전 값인 70의 위치 6 반환
  • 50 → 4: 정확히 일치하므로 위치 4 반환
  • 59 → 4: 일치하는 값이 없으므로 59보다 작은 가장 가까운 값인 50의 위치 4 반환

이처럼 method="ffill" 옵션을 활용하면 시계열 데이터나 구간 검색 등에서 정확한 매칭이 불가능할 때 유연하게 이전 인덱스 값을 참조할 수 있습니다. 반대로 다음(뒤쪽) 인덱스 값을 찾고 싶다면 method="bfill"(backward fill)을 사용하면 됩니다.