본문 바로가기

프로그래밍/Python

[Python] pd.to_datetime 과 datetime.fromtimestamp 의 결과가 다르다.

타임스탬프로 시간이 주어진 데이터가 있는데, 이걸 데이트타임으로 변환하기 위해 다음 두가지 방법을 써 보았는데, 결과가 다르게 나왔다.


import time
import pandas as pd
import datetime

t = time.time()  # 1562770422.6544123
dt1 = pd.to_datetime(t, unit='s')
# dt1 = Timestamp('2019-07-10 14:53:42.654412270')
dt2 = datetime.datetime.fromtimestamp(t)
# dt2 = datetime.datetime(2019, 7, 10, 23, 53, 42, 654412)

두 결과의 타입이 조금 다르지만, 그걸 무시하고 봐도, 날짜가 같지만, 시간이 14시와 23시로 차이가 난다.

이결과는,

  • datetime.fromtimestamp는 디폴트로 타임존을 고려해서, 로컬타임을 구하지만,
  • pd.to_datetime 은 디폴트로 utc 타임을 구하기 때문에 발생한 것이다.
  • datetime 으로 구한 것이 9시간만큼 크다. 한국시간은 utc 시간의 기준인 영국시간보다 9시간 빠르다.

이 두가지를 일치시키는 방법은,

  • datetime.fromtimestamp 에 tz 인자로 utc 를 주어, utc 타임을 구하는 방법
  • pd.to_datetime 을 구할 때, 타임존을 고려하도록 하는 방법이 있을 것이다.