CustomBusinessHour 오프셋이란?
Pandas에서 CustomBusinessHour.next_bday 속성을 사용하면 특정 타임스탬프를 다음 영업일로 손쉽게 이동할 수 있습니다. CustomBusinessHour는 DateOffset의 하위 클래스로, 사용자가 직접 영업 시작 시간, 종료 시간, 그리고 유효한 영업 요일(weekmask)을 지정하여 유연하게 날짜·시간 연산을 수행할 수 있도록 도와줍니다.
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
Pandas에서 타임스탬프 객체를 생성합니다.
timestamp = pd.Timestamp('2021-12-20 08:35:10')CustomBusinessHour 오프셋을 생성합니다. 아래 예제에서는 영업 시작 시간을 오전 9시 30분, 종료 시간을 오후 6시로 설정하고, 월·화·수·금요일만 영업일로 지정했습니다.
cbhOffset = pd.tseries.offsets.CustomBusinessHour(start='09:30', end='18:00', n=5, weekmask='Mon Tue Wed Fri')
생성된 CustomBusinessHour 오프셋을 출력해 확인합니다.
print("\nCustomBusinessHour Offset...\n", cbhOffset)다음 영업일을 출력합니다.
print("\nThe next business day...\n", timestamp + cbhOffset.next_bday)전체 예제 코드
지금까지의 과정을 하나의 코드로 정리하면 다음과 같습니다.
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(start='09:30', end='18:00', n=5, weekmask='Mon Tue Wed Fri')
# CustomBusinessHour 오프셋 출력
print("\nCustomBusinessHour Offset...\n", cbhOffset)
# 다음 영업일 출력
print("\nThe next business day...\n", timestamp + cbhOffset.next_bday)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Timestamp... 2021-12-20 08:35:10 CustomBusinessHour Offset... <5 * CustomBusinessHours: CBH=09:30-18:00> The next business day... 2021-12-21 08:35:10
결과 분석
예제에서 사용한 타임스탬프는 2021년 12월 20일(월요일)입니다. weekmask에서 'Thu'를 제외했기 때문에 목요일은 영업일이 아니며, 금요일은 영업일에 포함됩니다. 따라서 next_bday 속성을 적용하면 해당 날짜의 다음 영업일인 2021년 12월 21일(화요일)로 이동하고, 원래의 시간(08:35:10)은 그대로 유지되는 것을 확인할 수 있습니다.
이처럼 CustomBusinessHour 오프셋은 주말이나 특정 휴무일을 제외한 실제 업무 일정 계산에 매우 유용하게 활용할 수 있습니다.