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

Python Pandas – BusinessHour 오프셋에 적용된 증분 횟수(n) 반환하기

BusinessHour.n 속성이란?

Pandas에서 BusinessHour 오프셋에 적용된 증분 횟수를 반환하려면 BusinessHour.n 속성을 사용하면 됩니다. BusinessHour는 DateOffset의 하위 클래스로, 실제 영업 시간 기준으로 날짜와 시간을 이동시킬 때 활용됩니다. 이 속성은 오프셋 객체를 생성할 때 전달한 n 매개변수의 값을 그대로 반환합니다.

1단계: 필요한 라이브러리 임포트

먼저 Pandas를 임포트합니다.

import pandas as pd

2단계: 타임스탬프 객체 생성

기준이 될 타임스탬프 객체를 생성합니다.

timestamp = pd.Timestamp('2021-1-1 01:55:30')

3단계: BusinessHour 오프셋 생성

BusinessHour 오프셋을 생성합니다. start는 사용자 지정 영업 시작 시간, end는 영업 종료 시간이며 두 값 모두 24시간(HH:mm) 형식으로 지정합니다. n 매개변수에는 적용할 증분 횟수를 입력합니다.

bhOffset = pd.tseries.offsets.BusinessHour(start="09:30", end="18:00", n=8)

4단계: 결과 확인

오프셋이 적용된 타임스탬프와 해당 오프셋의 증분 횟수를 출력해 확인합니다.

print("\nUpdated Timestamp...\n", timestamp + bhOffset)
print("\nThe count of increments on the BusinessHour object..\n", bhOffset.n)

전체 예제 코드

지금까지 살펴본 내용을 하나로 정리한 전체 코드는 다음과 같습니다.

import pandas as pd

# Pandas에서 타임스탬프 객체 설정
timestamp = pd.Timestamp('2021-1-1 01:55:30')

# 타임스탬프 출력
print("Timestamp...\n", timestamp)

# BusinessHour 오프셋 생성
# BusinessHour는 DateOffset의 하위 클래스입니다.
# "start"는 사용자 지정 영업 시작 시간(24시간 형식)입니다.
# "end"는 사용자 지정 영업 종료 시간(24시간 형식)입니다.
bhOffset = pd.tseries.offsets.BusinessHour(start="09:30", end="18:00", n=8)

# BusinessHour 오프셋 출력
print("\nBusinessHour Offset...\n", bhOffset)

# 업데이트된 타임스탬프 출력
print("\nUpdated Timestamp...\n", timestamp + bhOffset)

# 주어진 BusinessHour 객체에 적용된 증분 횟수 반환
print("\nThe count of increments on the BusinessHour object..\n", bhOffset.n)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Timestamp...
 2021-01-01 01:55:30

BusinessHour Offset...
 <8 * BusinessHours: BH=09:30-18:00>

Updated Timestamp...
 2021-01-01 17:30:00

The count of increments on the BusinessHour object..
 8

결과 해석

출력 결과에서 bhOffset.n8을 반환한 것을 확인할 수 있습니다. 이는 오프셋 생성 시 n=8로 지정했기 때문입니다.

또 하나 눈여겨볼 점은 업데이트된 타임스탬프입니다. 기준 시각인 2021-01-01 01:55:30은 영업 시작 시간(오전 9시 30분)보다 이른 새벽 시간대이므로, 오프셋을 더하면 먼저 다음 영업 시간 시작점인 09:30으로 조정된 뒤 8시간이 추가되어 최종적으로 2021-01-01 17:30:00이 계산됩니다. 이처럼 BusinessHour 오프셋은 영업 시간 밖의 시간을 자동으로 건너뛰어 처리한다는 점이 일반적인 시간 연산과 다릅니다.