Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas CustomBusinessHour 오프셋으로 다음 영업일 이동하기

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 오프셋은 주말이나 특정 휴무일을 제외한 실제 업무 일정 계산에 매우 유용하게 활용할 수 있습니다.