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

Python Pandas – asof() 메서드로 인덱스 레이블 조회하기 (모든 레이블이 전달된 값보다 늦으면 NaN 반환)


Pandas에서 index.asof() 메서드를 사용하면 인덱스에 포함된 모든 레이블이 전달된 레이블보다 늦은 경우를 손쉽게 처리할 수 있습니다. 이 메서드는 전달된 레이블과 일치하거나 그보다 앞선(작거나 같은) 가장 가까운 인덱스 레이블을 반환하며, 인덱스의 모든 레이블이 전달된 레이블보다 늦다면 NaN을 반환합니다.

asof() 메서드의 동작 방식

asof(label)은 다음과 같은 규칙으로 동작합니다.

  • 전달된 레이블과 정확히 일치하는 인덱스 레이블이 있으면 해당 값을 반환합니다.
  • 일치하는 레이블이 없으면, 전달된 레이블보다 작거나 같은 값 중 가장 큰 레이블을 반환합니다.
  • 인덱스의 모든 레이블이 전달된 레이블보다 크면 NaN을 반환합니다.

이러한 특성 덕분에 시계열 데이터에서 특정 시점 이전의 마지막 유효한 값을 찾을 때 특히 유용합니다.

필요한 라이브러리 가져오기

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

import pandas as pd

Pandas 인덱스 생성 및 출력

정수 값들로 구성된 Pandas 인덱스를 생성합니다 −

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

생성한 인덱스를 화면에 출력합니다 −

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

인덱스에서 레이블을 조회합니다. 인덱스의 모든 레이블이 전달된 레이블(여기서는 6)보다 늦으므로 NaN이 반환됩니다 −

print("\nGet the label from the index...\n", index.asof(6))

예제

지금까지의 내용을 정리한 전체 코드는 다음과 같습니다 −

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)

# 인덱스에서 레이블 조회
# 인덱스의 모든 레이블이 전달된 레이블보다 늦으면 NaN 반환
print("\nGet the label from the index...\n", index.asof(6))

출력 결과

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

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

Number of elements in the index...
7

Get the label from the index...
nan

실행 결과를 살펴보면, 인덱스의 최솟값이 10이므로 asof(6)를 호출했을 때 6보다 작거나 같은 레이블이 존재하지 않습니다. 따라서 NaN이 반환된 것을 확인할 수 있습니다. 만약 index.asof(35)처럼 호출했다면, 35와 정확히 일치하는 레이블은 없지만 35보다 작거나 같은 가장 큰 레이블인 30이 반환됩니다.