개요
Pandas에서 TimeDeltaIndex 객체의 각 timedelta 값을 시간(hour) 단위로 올림 처리하려면 ceil() 메서드를 사용하면 됩니다. 이때 freq 매개변수에 'H'(hourly, 시간당 빈도)를 지정하면 각 값을 가장 가까운 다음 정각으로 올릴 수 있습니다.
예를 들어 '4 days 08:20:00'이라는 값은 시간 단위로 올림하면 '4 days 09:00:00'이 됩니다.
1단계: 필요한 라이브러리 가져오기
먼저 pandas 라이브러리를 임포트합니다.
import pandas as pd
2단계: TimeDeltaIndex 객체 생성
data 매개변수에 timedelta 형식의 문자열 리스트를 전달하여 TimeDeltaIndex 객체를 생성합니다.
tdIndex = pd.TimedeltaIndex(data =['4 day 8h 20min 35us 45ns', '+17:42:19.999999', '9 day 3h 08:16:02.000055', '+22:35:25.000075'])
3단계: TimeDeltaIndex 출력하기
생성된 TimeDeltaIndex 객체를 화면에 출력해 확인합니다.
print("TimedeltaIndex...\n", tdIndex)4단계: 시간 단위 빈도로 Ceil 연산 수행
freq='H' 옵션을 지정하여 각 timedelta 값을 시간(hour) 단위로 올립니다.
print("\nPerforming Ceil operation with hourly frequency...\n",
tdIndex.ceil(freq='H'))전체 예제 코드
지금까지의 과정을 하나의 코드로 정리하면 다음과 같습니다.
import pandas as pd
# TimeDeltaIndex 객체 생성
# data 매개변수로 timedelta 형식의 데이터를 설정합니다.
tdIndex = pd.TimedeltaIndex(data =['4 day 8h 20min 35us 45ns', '+17:42:19.999999',
'9 day 3h 08:16:02.000055', '+22:35:25.000075'])
# TimeDeltaIndex 출력
print("TimedeltaIndex...\n", tdIndex)
# Timedelta의 구성 요소(days, hours 등)를 데이터프레임으로 반환
print("\nThe Dataframe of the components of TimeDeltas...\n", tdIndex.components)
# 시간(hourly) 빈도로 Ceil 연산 수행
# freq 매개변수에 'H'를 사용합니다.
print("\nPerforming Ceil operation with hourly frequency...\n",
tdIndex.ceil(freq='H'))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
TimedeltaIndex...
TimedeltaIndex(['4 days 08:20:00.000035045', '0 days 17:42:19.999999',
'9 days 11:16:02.000055', '0 days 22:35:25.000075'],
dtype='timedelta64[ns]', freq=None)
The Dataframe of the components of TimeDeltas...
days hours minutes seconds milliseconds microseconds nanoseconds
0 4 8 20 0 0 35 45
1 0 17 42 19 999 999 0
2 9 11 16 2 0 55 0
3 0 22 35 25 0 75 0
Performing Ceil operation with hourly frequency...
TimedeltaIndex(['4 days 09:00:00', '0 days 18:00:00', '9 days 12:00:00',
'0 days 23:00:00'],
dtype='timedelta64[ns]', freq=None)결과 해석
실행 결과를 보면 각 timedelta 값이 다음 정각으로 올림된 것을 확인할 수 있습니다.
- '4 days 08:20:00.000035045' → '4 days 09:00:00'
- '0 days 17:42:19.999999' → '0 days 18:00:00'
- '9 days 11:16:02.000055' → '9 days 12:00:00'
- '0 days 22:35:25.000075' → '0 days 23:00:00'
즉, 밀리초·마이크로초·나노초 등 나머지 값이 존재하는 경우 해당 시간의 다음 정각으로 반올림(올림)되며, 이미 정각인 경우에는 그대로 유지됩니다. 이 방법은 로그 데이터 정규화나 시간 구간 집계 작업에서 유용하게 활용할 수 있습니다.