Pandas에서 CustomBusinessDay 오프셋에 적용된 weekmask(주간 영업일 마스크)를 확인하려면 CustomBusinessDay.weekmask 속성을 사용하면 됩니다. weekmask는 어떤 요일을 영업일로 취급할지 정의하는 문자열로, 이 값을 통해 사용자 지정 영업일의 기준을 한눈에 파악할 수 있습니다.
단계별 구현 방법
1단계: 필요한 라이브러리 임포트
import pandas as pd
2단계: 타임스탬프(Timestamp) 객체 설정
timestamp = pd.Timestamp('2021-10-22 03:10:35')
3단계: CustomBusinessDay 오프셋 생성
CustomBusinessDay는 공휴일 등 특정 날짜를 제외한 사용자 지정 영업일을 나타내는 DateOffset의 서브클래스입니다. 아래 예제에서는 증분 단위(n)를 4로 설정하고, 월·화·수·금요일만 유효한 영업일로 지정하는 weekmask를 적용했습니다.
cbdOffset = pd.tseries.offsets.CustomBusinessDay(n = 4, weekmask = 'Mon Tue Wed Fri')
4단계: 오프셋 적용 후 weekmask 확인
타임스탬프에 오프셋을 더해 업데이트된 날짜를 출력하고, weekmask 속성으로 실제 적용된 영업일 마스크를 확인합니다.
print("\nUpdated Timestamp...\n", timestamp + cbdOffset)
print("\nThe weekmask on the CustomBusinessDay object..\n", cbdOffset.weekmask)
전체 예제 코드
지금까지의 과정을 하나로 합친 전체 코드는 다음과 같습니다.
import pandas as pd
# Pandas에서 타임스탬프 객체 설정
timestamp = pd.Timestamp('2021-10-22 03:10:35')
# 타임스탬프 표시
print("Timestamp...\n", timestamp)
# CustomBusinessDay 오프셋 생성
# CustomBusinessDay는 휴일을 제외한 사용자 지정 영업일을 나타내는 DateOffset의 서브클래스입니다.
# 유효한 영업일의 weekmask 지정
cbdOffset = pd.tseries.offsets.CustomBusinessDay(n = 4, weekmask = 'Mon Tue Wed Fri')
# CustomBusinessDay 오프셋 표시
print("\nCustomBusinessDay Offset...\n", cbdOffset)
# 타임스탬프에 오프셋을 더하고 업데이트된 타임스탬프 표시
print("\nUpdated Timestamp...\n", timestamp + cbdOffset)
# 주어진 CustomBusinessDay 오프셋 객체에 적용된 빈도(freqstr)를 문자열로 반환
print("\nFrequency applied on the given CustomBusinessDay Offset object...\n", cbdOffset.freqstr)
# 주어진 CustomBusinessDay 객체의 증분 횟수(n) 반환
print("\nThe count of increments on the CustomBusinessDay object..\n", cbdOffset.n)
# weekmask 표시
print("\nThe weekmask on the CustomBusinessDay object..\n", cbdOffset.weekmask)
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Timestamp... 2021-10-22 03:10:35 CustomBusinessDay Offset... <4 * CustomBusinessDays> Updated Timestamp... 2021-10-29 03:10:35 Frequency applied on the given CustomBusinessDay Offset object... 4C The count of increments on the CustomBusinessDay object.. 4 The weekmask on the CustomBusinessDay object.. Mon Tue Wed Fri
결과 해설
- Timestamp: 기준이 되는 원본 시각은 2021-10-22 03:10:35(금요일)입니다.
- Updated Timestamp: weekmask가 'Mon Tue Wed Fri'이므로 목·토·일은 영업일에서 제외됩니다. 따라서 유효 영업일 4일을 거친 결과는 2021-10-29(다음 주 금요일)가 됩니다. (10/25(월) → 10/26(화) → 10/27(수) → 10/29(금))
- freqstr: '4C'는 사용자 지정 영업일(CustomBusinessDay) 4일을 의미하는 빈도 문자열입니다.
- n: 오프셋에 설정된 증분 횟수로, 이 예제에서는 4입니다.
- weekmask: CustomBusinessDay 객체에 실제 적용된 영업일 마스크인 'Mon Tue Wed Fri'가 그대로 출력됩니다.