Pandas에서 TimeDeltaIndex 객체에 대해 분(minute) 단위 빈도로 ceil(올림) 연산을 수행하려면 TimeDeltaIndex.ceil() 메서드를 사용합니다. 이때 분 단위 빈도를 지정하려면 freq 매개변수에 'T' 값을 전달하면 됩니다.
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'])
생성된 TimedeltaIndex를 화면에 출력해 확인해 보겠습니다.
print("TimedeltaIndex...\n", tdIndex)
3. 분 단위 빈도로 ceil 연산 수행하기
분 단위 빈도는 'T'로 표현됩니다. freq 매개변수에 'T'를 지정하여 ceil 연산을 실행하면 각 시간 델타 값이 가장 가까운 '분' 단위 위쪽으로 올림 처리됩니다.
print("\n분 단위 빈도로 Ceil 연산 수행...\n",
tdIndex.ceil(freq='T'))
전체 예제 코드
지금까지 설명한 내용을 하나의 코드로 정리하면 다음과 같습니다.
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)
# TimeDeltas 구성 요소(components)를 데이터프레임으로 반환
print("\nTimeDeltas 구성 요소 데이터프레임...\n", tdIndex.components)
# 분 단위 빈도('T')로 ceil 연산 수행
print("\n분 단위 빈도로 Ceil 연산 수행...\n",
tdIndex.ceil(freq='T'))
실행 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
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
분 단위 빈도로 Ceil 연산 수행...
TimedeltaIndex(['4 days 08:21:00', '0 days 17:43:00', '9 days 11:17:00',
'0 days 22:36:00'],
dtype='timedelta64[ns]', freq=None)
출력 결과를 살펴보면, 원래 값들의 초·마이크로초·나노초 단위 값들이 모두 올림되어 각 항목이 정확히 '분' 단위 경계로 반올림(올림)된 것을 확인할 수 있습니다. 예를 들어 '17:42:19.999999'는 '17:43:00'으로, '22:35:25.000075'는 '22:36:00'으로 변환되었습니다.