파이썬/데이터프레임 다루기

Pandas에서 Timedelta 다루기

Data Jun 2025. 8. 31. 11:30

데이터 분석을 하다 보면 날짜와 시간의 차이를 계산해야 할 때가 많습니다. Pandas에서는 이를 다루기 위해 Timedelta 타입을 제공합니다. Timedelta는 두 시점 간의 시간 차이를 나타내는 자료형입니다.

 

Timedelta 기본 개념

Timedelta는 시간의 양을 표현합니다. 예를 들어, 2일 차이나는 데이터나 3시간 차이나는 데이터를 쉽게 다룰 수 있습니다.

import pandas as pd

# 두 날짜 차이 계산
date1 = pd.to_datetime("2022-10-17")
date2 = pd.to_datetime("2022-10-20")

diff = date2 - date1
print(diff)

출력 결과

3 days

date2 - date1 의 결과는 Timedelta 객체가 됩니다.

 

unit 파라미터 활용하기

Timedelta는 숫자와 unit을 조합해서 생성할 수도 있습니다.
unit은 단위를 지정하는 파라미터로, 자주 쓰이는 값은 다음과 같습니다:

# 10일짜리 Timedelta
td1 = pd.to_timedelta(10, unit="D")

# 5시간짜리 Timedelta
td2 = pd.to_timedelta(5, unit="h")

print(td1, td2)

출력 결과

10 days 0:00:00 0 days 05:00:00

숫자 + unit을 활용하면 직관적으로 시간 차이를 생성할 수 있어 편리합니다.

 

 

불리언 인덱싱 시 타입 일치 주의하기

시간 관련 데이터를 조건으로 필터링할 때는 비교하는 값의 타입이 같아야 합니다.

예를 들어, Timedelta 타입과 문자열을 바로 비교하면 에러가 발생합니다.

df = pd.DataFrame({
    "duration": pd.to_timedelta([5, 10, 15], unit="D")
})

# 잘못된 예시 (문자열 비교 → 에러)
df[df["duration"] > "10 days"]

위 코드는 '10 days'가 문자열이기 때문에 비교가 불가능합니다.

 

올바른 방법은 비교 대상도 Timedelta로 변환하는 것입니다.

# 올바른 예시
df[df["duration"] > pd.Timedelta("10 days")]

출력 결과

   duration
2   15 days

 

Timedelta 활용 예시

데이터프레임에서도 Timedelta를 쉽게 적용할 수 있습니다.

df = pd.DataFrame({
    "start": pd.to_datetime(["2022-10-17", "2022-10-18"]),
})

df["end"] = df["start"] + pd.to_timedelta(2, unit="D")
print(df)

출력 결과

       start        end
0 2022-10-17 2022-10-19
1 2022-10-18 2022-10-20

 

정리

  • Timedelta: 날짜·시간 차이를 표현하는 자료형
  • unit 파라미터: 초(s), 분(m), 시(h), 일(D), 주(W), 월(M) 등 다양한 단위 지원
  • 불리언 인덱싱 주의: 비교 시 반드시 타입을 맞춰야 함 ("10 days" ❌ → pd.Timedelta("10 days") ✅)

기억할 점: 시간 타입은 반드시 같은 타입끼리 비교해야 한다!
이 원칙만 지켜도 시간 관련 인덱싱 실수를 크게 줄일 수 있습니다.