Pandas에서 제공된 날짜를 뒤로 롤링(되돌리기)하려면 CustomBusinessHour.rollback() 메서드를 사용합니다. 이 메서드는 주어진 타임스탬프가 유효한 사용자 지정 영업시간에 해당하지 않을 경우, 그 시점보다 앞선 가장 가까운 유효 영업시간으로 날짜를 조정해 줍니다.
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
Pandas에서 타임스탬프 객체를 설정합니다.
timestamp = pd.Timestamp('2021-12-20 08:35:10')CustomBusinessHour 오프셋을 생성합니다. CustomBusinessHour는 DateOffset의 하위 클래스로, weekmask 매개변수를 통해 유효한 영업 요일을 직접 지정할 수 있습니다.
cbhOffset = pd.tseries.offsets.CustomBusinessHour(n = 5, weekmask = 'Mon Tue Wed Fri')
타임스탬프에 오프셋을 더한 후 업데이트된 타임스탬프를 출력합니다.
print("\nUpdated Timestamp...\n", timestamp + cbhOffset)이제 해당 날짜가 오프셋에 포함되지 않는 경우 뒤로 롤백합니다. 여기서는 토요일인 2021-12-18을 기준으로 rollback()을 호출합니다.
roll_back = cbhOffset.rollback(pd.Timestamp('2021-12-18 08:35:10'))결과를 출력합니다.
print("\nRoll Backward Result...\n", roll_back)전체 예제 코드
다음은 위 과정을 하나로 정리한 전체 코드입니다.
import pandas as pd
# Pandas에서 타임스탬프 객체 설정
timestamp = pd.Timestamp('2021-12-20 08:35:10')
# 타임스탬프 출력
print("Timestamp...\n", timestamp)
# CustomBusinessHour 오프셋 생성
# CustomBusinessHour는 DateOffset의 하위 클래스
# weekmask로 유효한 영업 요일 지정 (월, 화, 수, 금)
cbhOffset = pd.tseries.offsets.CustomBusinessHour(n = 5, weekmask = 'Mon Tue Wed Fri')
# CustomBusinessHour 오프셋 출력
print("\nCustomBusinessHour Offset...\n", cbhOffset)
# 타임스탬프에 오프셋을 더하고 업데이트된 타임스탬프 출력
print("\nUpdated Timestamp...\n", timestamp + cbhOffset)
# 오프셋에 해당하지 않으면 뒤로 롤백
roll_back = cbhOffset.rollback(pd.Timestamp('2021-12-18 08:35:10'))
# 결과 출력
print("\nRoll Backward Result...\n", roll_back)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Timestamp... 2021-12-20 08:35:10 CustomBusinessHour Offset... <5 * CustomBusinessHours: CBH=09:00-17:00> Updated Timestamp... 2021-12-20 14:00:00 Roll Backward Result... 2021-12-17 17:00:00
결과 해설
weekmask가 'Mon Tue Wed Fri'로 지정되어 있으므로 목요일과 주말은 유효한 영업일이 아닙니다. 따라서 2021-12-18(토요일) 08:35:10에 대해 rollback()을 호출하면, 가장 가까운 이전 유효 영업시간인 2021-12-17(금요일) 17:00:00, 즉 금요일 영업 종료 시각으로 날짜가 되돌려지는 것을 확인할 수 있습니다.