Pandas에서 Timedelta 객체를 특정 시간 단위로 내림(floor) 처리하려면 timedelta.floor() 메서드를 사용합니다. 밀리초(ms) 단위로 내림된 결과를 얻으려면 freq 매개변수에 'ms' 값을 지정하면 됩니다.
Timedelta란?
TimeDelta는 Python의 표준 datetime 라이브러리에서 사용하는 timedelta를 다른 방식으로 표현한 것으로, 두 날짜·시간 사이의 차이(기간)를 나타냅니다. Pandas에서는 pd.Timedelta()를 통해 손쉽게 생성할 수 있습니다.
필요한 라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
Timedelta 객체 생성
일, 시간, 분, 초, 밀리초, 나노초가 포함된 Timedelta 객체를 생성해 보겠습니다.
timedelta = pd.Timedelta('2 days 10 hours 45 min 20 s 35 ms 55 ns')Timedelta 출력
생성된 Timedelta 객체를 화면에 표시합니다.
print("Timedelta...\n", timedelta)밀리초 단위로 내림 처리
freq 매개변수를 'ms'로 설정하여 밀리초 분해능으로 내림한 결과를 반환합니다. 이때 나노초(nanosecond) 값은 잘려나가고 밀리초 단위까지의 값이 됩니다.
timedelta.floor(freq='ms')
전체 예제 코드
다음은 위 과정을 모두 포함한 완전한 코드입니다.
import pandas as pd
# TimeDeltas는 Python의 표준 datetime 라이브러리의 timedelta를 다른 방식으로 표현한 것입니다.
# Timedelta 객체 생성
timedelta = pd.Timedelta('2 days 10 hours 45 min 20 s 35 ms 55 ns')
# Timedelta 출력
print("Timedelta...\n", timedelta)
# 밀리초(ms) 분해능으로 내림한 Timedelta 반환
res = timedelta.floor(freq='ms')
# 내림 처리된 Timedelta 출력
print("\nTimedelta (milliseconds floored)...\n", res)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Timedelta... 2 days 10:45:20.035000055 Timedelta (milliseconds floored)... 2 days 10:45:20.035000
정리
원본 Timedelta는 나노초 단위 값(55ns)을 포함하고 있었지만, floor(freq='ms')를 적용한 후에는 밀리초 단위까지의 값만 남게 됩니다. 즉, 35ms보다 작은 단위인 55ns가 버려져 '2 days 10:45:20.035000'이 된 것을 확인할 수 있습니다. 참고로 반올림이 아닌 항상 아래 방향(내림)으로 처리되므로, 정확한 시간 구간 계산이 필요한 데이터 분석 작업에서 유용하게 활용할 수 있습니다.