본문으로 건너뛰기
김신건의 로그

[Pandas] to_datetime

· 수정 · 📖 약 1분 · 200자/단어 #python #pandas #datetime #parsing
Pandas to_datetime, pd.to_datetime, 날짜 변환

정의

pd.to_datetime(arg) 는 문자열/숫자를 datetime 으로 변환. pandas 의 시계열 작업의 시작.

기본

pd.to_datetime('2024-01-15')                       # Timestamp
pd.to_datetime(['2024-01-15', '2024-02-20'])       # DatetimeIndex
pd.to_datetime(df['date_str'])                     # Series
python
import pandas as pd
s = pd.Series(['2024-01-15', '2024-02-20', '2024-03-25'])
dt = pd.to_datetime(s)
print(dt)
print(dt.dtype)
결과
0   2024-01-15
1   2024-02-20
2   2024-03-25
dtype: datetime64[ns]
datetime64[ns]

format 명시 (빠르고 명확)

pd.to_datetime(s, format='%Y-%m-%d')               # ISO
pd.to_datetime(s, format='%d/%m/%Y')               # 유럽식
pd.to_datetime(s, format='%Y년 %m월 %d일')         # 한글 포맷
pd.to_datetime(s, format='mixed')                  # 여러 포맷 (느림)

format 명시가 10-100배 빠르고 parsing 오류도 줄인다.

errors 옵션

pd.to_datetime(s, errors='raise')      # 기본, 에러 시 throw
pd.to_datetime(s, errors='coerce')     # 에러 → NaT
pd.to_datetime(s, errors='ignore')     # 에러 시 원본 반환

coerce 가 가장 흔히 쓰임 (잘못된 행을 NaT 로 두고 분석 진행).

여러 컬럼 → 하나의 datetime

df = pd.DataFrame({
    'year': [2024, 2024],
    'month': [1, 2],
    'day': [15, 20],
})
pd.to_datetime(df[['year', 'month', 'day']])
# 0   2024-01-15
# 1   2024-02-20

unix timestamp

pd.to_datetime([1705248000, 1705334400], unit='s')
pd.to_datetime([1705248000000], unit='ms')

timezone

pd.to_datetime('2024-01-15').tz_localize('Asia/Seoul')
pd.to_datetime('2024-01-15 09:00:00+09:00')

자세히는 별도 timezone 문서.

DatetimeIndex 의 강점

df.index = pd.to_datetime(df['date'])
df['2024']                         # 2024년 전체
df['2024-01']                      # 2024년 1월
df['2024-01-15':'2024-01-31']      # 범위
df.loc['2024-01-15']

Pandas dt accessor 로 datetime 의 각 컴포넌트 접근.

함정

1. 한국어 / 비표준 포맷

# '2024년 1월 15일' 같은 형식
pd.to_datetime(s, format='%Y년 %m월 %d일')

format 명시 없이는 dateutil 추론이 잘못된 결과를 줄 수 있음.

2. day first vs month first

pd.to_datetime('01/02/2024')                # 미국식 (1월 2일) 가정
pd.to_datetime('01/02/2024', dayfirst=True) # 유럽식 (2월 1일)

지역별 모호한 형식은 dayfirst 명시.

3. 빈 문자열 / None

pd.to_datetime(['', None, '2024-01-15'], errors='coerce')
# NaT, NaT, Timestamp

errors='coerce' 가 안전.

4. tzinfo 혼재

# 일부에 timezone, 일부에 없음 → 변환 실패
pd.to_datetime(['2024-01-15+09:00', '2024-01-15'], errors='coerce', utc=True)

utc=True 로 모두 UTC 로 정규화.

참고

이 글의 용어 (3개)
[Pandas] .dt accessorpandas
정의 는 datetime Series 의 각 구성요소 (년/월/일/시/분/요일 등) 에 벡터로 접근하는 accessor. 의 datetime 버전. 기본 컴포넌트 | 속성 | 의…
[Pandas] date_range / Timestamppandas
정의 - : 정해진 시작/끝/간격으로 datetime 시퀀스 생성 - : pandas 의 단일 datetime 객체 - : 시간 차이 daterange , , , 중 3 개 만 …
[Pandas] resamplepandas
정의 는 시계열 데이터를 다른 빈도 (월별, 일별, 시간별 등) 로 재샘플링하면서 집계한다. 의 시계열 버전. DatetimeIndex (또는 으로 datetime 컬럼) 이 필…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기