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

Python Pandas – Timedelta를 시간(Hourly) 단위 빈도로 반올림하는 방법

Pandas에서 Timedelta 객체를 원하는 해상도로 반올림하려면 round() 메서드를 사용하면 됩니다. 이때 freq 매개변수에 'H'(시간) 값을 지정하면 시간(hour) 단위 빈도로 반올림할 수 있습니다.

먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd

Timedelta는 Python 표준 datetime 라이브러리의 timedelta를 다른 방식으로 표현한 것으로, 일(day), 시간(hour), 분(minute), 초(second), 밀리초(ms), 나노초(ns) 등 다양한 시간 단위를 하나의 문자열로 생성할 수 있습니다. 아래와 같이 Timedelta 객체를 만들어 보겠습니다.

timedelta = pd.Timedelta('2 days 10 hours 45 min 20 s 35 ms 55 ns')

Timedelta 값 확인하기

생성한 Timedelta 객체를 출력하여 내용을 확인합니다.

print("Timedelta...\n", timedelta)

시간 단위로 반올림하기

이제 round() 메서드에 freq='H' 매개변수를 전달하여 시간(hourly) 빈도 기준으로 반올림된 결과를 반환받습니다.

timedelta.round(freq='H')

이 예제에서는 10시간 45분 20초가 가장 가까운 정각인 11시간으로 반올림됩니다. 분(minute)이 30분 이상이면 올림되고, 미만이면 내림됩니다.

전체 예제 코드

지금까지 설명한 내용을 하나의 코드로 정리하면 다음과 같습니다.

import pandas as pd

# Timedelta는 Python 표준 datetime 라이브러리의 timedelta를 다른 방식으로 표현한 것입니다.
# Timedelta 객체 생성
timedelta = pd.Timedelta('2 days 10 hours 45 min 20 s 35 ms 55 ns')

# Timedelta 출력
print("Timedelta...\n", timedelta)

# 시간(hourly) 빈도 기준으로 반올림된 결과 반환
# freq 매개변수에 해상도를 지정합니다.
res = timedelta.round(freq='H')

# 반올림된 결과 출력
print("\nTimedelta (hourly rounded)...\n", res)

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Timedelta...
2 days 10:45:20.035000055

Timedelta (hourly rounded)...
2 days 11:00:00

실행 결과를 보면 원래 값 2 days 10:45:20.035000055가 시간 단위 해상도로 반올림되어 2 days 11:00:00으로 변환된 것을 확인할 수 있습니다. 이처럼 round() 메서드와 freq 매개변수를 활용하면 초, 분, 시간, 일 등 다양한 단위로 Timedelta를 손쉽게 반올림할 수 있습니다.