Pandas의 DateTimeIndex.ceil() 메서드를 사용하면 DateTimeIndex에 포함된 타임스탬프들을 지정한 빈도(freq) 기준으로 올림(ceil) 처리할 수 있습니다. 분(minute) 단위로 올림하려면 freq 매개변수에 'T' 값을 지정하면 됩니다.
참고로 최신 버전의 Pandas에서는 별칭 'T'가 deprecated되었으므로, 가능하다면 동일한 의미를 가진 'min'을 사용하는 것이 좋습니다.
단계별 구현 방법
1단계: 필요한 라이브러리 임포트
먼저 pandas 라이브러리를 임포트합니다.
import pandas as pd2단계: DatetimeIndex 생성
시작 시점 '2021-10-18 07:20:32.261811624'부터 5개의 기간(periods=5)을 가지며, 40초(freq='40S') 간격으로 생성하고, 시간대는 'Australia/Adelaide'(호주 애들레이드)로 설정한 DatetimeIndex를 만듭니다.
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='40S')3단계: DateTimeIndex 확인 및 분(minute) 추출
생성된 인덱스를 출력하고, 필요하다면 .minute 속성으로 분 값만 추출할 수 있습니다.
print("DateTimeIndex...\n", datetimeindex)
# 분(minute) 값만 추출
res = datetimeindex.minute
print("\nThe minute from DateTimeIndex...\n", res)4단계: 분 단위 Ceil 연산 수행
freq='T'로 지정하여 각 타임스탬프를 다음 분의 시작 시점으로 올립니다.
print("\nPerforming ceil operation with minute frequency...\n",
datetimeindex.ceil(freq='T'))전체 예제 코드
아래는 위 과정을 하나로 합친 완전한 코드입니다.
import pandas as pd
# 40초 간격으로 5개의 타임스탬프를 가지는 DatetimeIndex 생성 (호주 애들레이드 시간대)
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='40S')
# DateTimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)
# DateTimeIndex의 빈도(frequency) 출력
print("DateTimeIndex frequency...\n", datetimeindex.freq)
# 분(minute) 값 추출
res = datetimeindex.minute
print("\nThe minute from DateTimeIndex...\n", res)
# 분 단위 ceil 연산 수행 ('T' = 분)
print("\nPerforming ceil operation with minute frequency...\n",
datetimeindex.ceil(freq='T'))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTimeIndex...
DatetimeIndex(['2021-10-18 07:20:32.261811624+10:30',
'2021-10-18 07:21:12.261811624+10:30',
'2021-10-18 07:21:52.261811624+10:30',
'2021-10-18 07:22:32.261811624+10:30',
'2021-10-18 07:23:12.261811624+10:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='40S')
DateTimeIndex frequency...
<40 * Seconds>
The minute from DateTimeIndex...
Int64Index([20, 21, 21, 22, 23], dtype='int64')
Performing ceil operation with minute frequency...
DatetimeIndex(['2021-10-18 07:21:00+10:30', '2021-10-18 07:22:00+10:30',
'2021-10-18 07:22:00+10:30', '2021-10-18 07:23:00+10:30',
'2021-10-18 07:24:00+10:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)결과 해석
출력 결과를 살펴보면, 초 단위까지 포함된 원본 타임스탬프들이 모두 다음 분의 시작 시점(초가 00인 시각)으로 올림된 것을 확인할 수 있습니다. 예를 들어 07:20:32.261...은 07:21:00으로, 07:21:12.261...은 07:22:00으로 변환되었습니다. 이처럼 ceil() 메서드는 시계열 데이터를 특정 시간 단위로 정규화할 때 매우 유용하게 활용됩니다.