Pandas에서 제공하는 BusinessHour 오프셋 개체의 next_bday 속성을 사용하면 주어진 타임스탬프를 기준으로 다음 영업일을 손쉽게 계산할 수 있습니다. 이 글에서는 BusinessHour 오프셋을 생성하고, next_bday 속성을 활용해 다음 영업일을 구하는 전 과정을 단계별로 살펴보겠습니다.
단계별 구현 방법
1단계: 필요한 라이브러리 임포트
가장 먼저 datetime과 pandas 라이브러리를 임포트합니다.
import datetime
import pandas as pd
2단계: BusinessHour 오프셋 생성
BusinessHour는 DateOffset의 하위 클래스입니다. 원하는 오프셋 값(예: 일 수와 시간)을 지정하여 생성할 수 있습니다.
bhOffset = pd.tseries.offsets.BusinessHour(offset = datetime.timedelta(days = 3, hours = 3))
3단계: BusinessHour 오프셋 출력
생성된 오프셋 객체가 올바르게 만들어졌는지 확인합니다.
print("\nBusinessHour Offset...\n", bhOffset)4단계: 타임스탬프 객체 설정
Pandas의 Timestamp 객체를 생성하여 기준이 될 날짜와 시간을 지정합니다.
timestamp = pd.Timestamp('2021-9-30 06:50:20')5단계: 다음 영업일 표시
타임스탬프에 next_bday 속성을 더하면 다음 영업일이 계산됩니다.
print("\nThe next business day...\n", timestamp + bhOffset.next_bday)전체 예제 코드
지금까지의 내용을 하나로 합친 완성된 코드는 다음과 같습니다.
import datetime
import pandas as pd
# Pandas에 타임스탬프 객체 설정
timestamp = pd.Timestamp('2021-9-30 06:50:20')
# 타임스탬프 출력
print("Timestamp...\n", timestamp)
# BusinessHour 오프셋 생성
# BusinessHour는 DateOffset의 하위 클래스입니다.
bhOffset = pd.tseries.offsets.BusinessHour(offset = datetime.timedelta(days = 3, hours = 3))
# BusinessHour 오프셋 출력
print("\nBusinessHour Offset...\n", bhOffset)
# 다음 영업일 출력
print("\nThe next business day...\n", timestamp + bhOffset.next_bday)
실행 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
Timestamp...
2021-09-30 06:50:20
BusinessHour Offset...
<BusinessHour: offset=datetime.timedelta(days=3, seconds=10800): BH=09:00-17:00>
The next business day...
2021-10-01 06:50:20
결과 해석
출력 결과를 보면 기준 타임스탬프인 2021-09-30(목요일)에 next_bday 속성을 적용했을 때, 시간은 그대로 유지되면서 날짜만 2021-10-01(금요일)로 이동한 것을 확인할 수 있습니다. 이처럼 BusinessHour 오프셋의 next_bday 속성은 주말이나 공휴일을 건너뛰고 정확한 다음 영업일을 찾아야 하는 업무 자동화, 스케줄링 작업에 매우 유용하게 활용됩니다.