DateTimeIndex에서 하루 중 특정 시각에 해당하는 값들의 인덱스 위치를 반환하려면 DateTimeIndex.indexer_at_time() 메서드를 사용하면 됩니다. 이 메서드는 지정한 시각과 일치하는 요소들의 정수 위치(인덱스)를 배열 형태로 반환해 주기 때문에, 시계열 데이터에서 특정 시간대의 데이터를 빠르게 찾을 때 유용합니다.
필요한 라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
DatetimeIndex 생성
시작 시점 '2021-10-30 02:30:50'부터 총 5개의 기간(periods=5)을 가지며, 빈도(freq)는 20분('20T')으로 설정하고, 시간대(timezone)는 'Australia/Adelaide'로 지정하여 DatetimeIndex를 생성합니다.
datetimeindex = pd.date_range('2021-10-30 02:30:50', periods=5, tz='Australia/Adelaide', freq='20T')DateTimeIndex 출력
생성된 DateTimeIndex를 화면에 출력해 확인합니다.
print("DateTimeIndex...\n", datetimeindex)특정 시각의 인덱스 위치 확인
이제 하루 중 특정 시각, 여기서는 '03:10:50'에 해당하는 값들의 인덱스 위치를 출력합니다.
print("\n특정 시각의 값 인덱스 위치...\n",
datetimeindex.indexer_at_time('2021-10-30 03:10:50'))전체 예제 코드
다음은 위 내용을 모두 포함한 전체 코드입니다.
import pandas as pd
# periods=5, freq='20T'(20분)인 DatetimeIndex 생성
# 시간대는 Australia/Adelaide로 설정
datetimeindex = pd.date_range('2021-10-30 02:30:50', periods=5, tz='Australia/Adelaide', freq='20T')
# DateTimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)
# DateTimeIndex의 빈도 출력
print("\nDateTimeIndex frequency...\n", datetimeindex.freq)
# 특정 시각(03:10:50)에 해당하는 값들의 인덱스 위치 출력
print("\n특정 시각의 값 인덱스 위치...\n",
datetimeindex.indexer_at_time('2021-10-30 03:10:50'))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTimeIndex... DatetimeIndex(['2021-10-30 02:30:50+10:30', '2021-10-30 02:50:50+10:30', '2021-10-30 03:10:50+10:30', '2021-10-30 03:30:50+10:30', '2021-10-30 03:50:50+10:30'], dtype='datetime64[ns, Australia/Adelaide]', freq='20T') DateTimeIndex frequency... <20 * Minutes> 특정 시각의 값 인덱스 위치... [2]
결과 해석
출력 결과를 보면 생성된 DatetimeIndex는 02:30:50부터 시작해 20분 간격으로 5개의 타임스탬프를 가지고 있습니다. 그중 시각 '03:10:50'에 해당하는 값은 세 번째 요소이므로, indexer_at_time() 메서드는 인덱스 위치 [2](0부터 시작하는 정수 위치)를 반환합니다. 참고로 이 메서드는 날짜가 아닌 '시각'만을 기준으로 매칭하기 때문에, 연도나 월, 일이 달라도 같은 시각이라면 해당 요소들이 모두 반환됩니다.