[Pandas] to_datetime
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 컬럼) 이 필…
💬 댓글