🔥알림🔥
① 테디노트 유튜브 -
구경하러 가기!
② LangChain 한국어 튜토리얼
바로가기 👀
③ 랭체인 노트 무료 전자책(wikidocs)
바로가기 🙌
④ RAG 비법노트 LangChain 강의오픈
바로가기 🙌
⑤ 서울대 PyTorch 딥러닝 강의
바로가기 🙌
Python, Pandas 의 날짜 파싱(parsing)시 적용하는 날짜/시간 관련 형식 정리표
이번 포스팅에서는 pandas의 to_datetime()
함수를 사용하면서 발생할 수 있는 날짜 파싱 오류에 대한 해결 방법 을 소개하려고 합니다.
이러한 오류는 주로 날짜 형식의 불일치로 인해 발생하는데, 이를 위해 format
키워드를 사용하여 날짜 형식을 명시적으로 지정 함으로써 대부분의 문제를 해결할 수 있습니다. 여기서 사용되는 날짜 형식은 Python의 strftime
의 지시자(Directive) 를 기반으로 합니다.
참고
날짜 형식에 적용하는 strftime 표
지시자 (Directive) | 설명 (Description) |
---|---|
%a |
요일의 축약된 이름 (예: Sun, Mon) |
%A |
요일의 전체 이름 (예: Sunday, Monday) |
%w |
요일을 10진수로 표시. 0이 일요일, 6이 토요일 |
%d |
일 (01-31) |
%b |
월의 축약된 이름 (예: Jan, Feb) |
%B |
월의 전체 이름 (예: January, February) |
%m |
월 (01-12) |
%y |
2자리 연도 |
%Y |
4자리 연도 |
%H |
24시간 형식의 시간 (00-23) |
%I |
12시간 형식의 시간 (01-12) |
%p |
AM 또는 PM |
%M |
분 (00-59) |
%S |
초 (00-59) |
%f |
마이크로초 (000000-999999) |
%z |
UTC 오프셋 (+HHMM[SS[.ffffff]] ) |
%Z |
시간대 이름 (예: UTC, GMT) |
%j |
연의 일 번째로 10진수로 표시 (001-366) |
%U |
연의 주 번호. 일요일을 주의 첫 날로 간주 (00-53) |
%W |
연의 주 번호. 월요일을 주의 첫 날로 간주 (00-53) |
%c |
로케일의 적절한 날짜 및 시간 표현 |
%x |
로케일의 적절한 날짜 표현 |
%X |
로케일의 적절한 시간 표현 |
%% |
리터럴 ‘%’ 문자 |
(예시) pandas.to_datetime()
기본 날짜 형식
import pandas as pd
date_str = '2021-06-15'
date_obj = pd.to_datetime(date_str, format='%Y-%m-%d')
미국식 날짜 형식 (월/일/연도)
date_str = '06/15/2021'
date_obj = pd.to_datetime(date_str, format='%m/%d/%Y')
연도가 2자리 수와 요일이 포함된 형식
date_str = 'Tue 21-06-15'
date_obj = pd.to_datetime(date_str, format='%a %y-%m-%d')
월의 전체 이름을 사용하는 형식
date_str = '15 June 2021'
date_obj = pd.to_datetime(date_str, format='%d %B %Y')
시간이 포함된 형식
date_str = '2021-06-15 13:45:30'
date_obj = pd.to_datetime(date_str, format='%Y-%m-%d %H:%M:%S')
12시간 형식과 AM/PM을 사용하는 경우
date_str = '06/15/2021 01:45:30 PM'
date_obj = pd.to_datetime(date_str, format='%m/%d/%Y %I:%M:%S %p')
(예시) datetime.strftime()
아래의 예시는 datetime 모듈의 날짜시간 객체를 strftime()
함수로 날짜시간 형식을 지정하여 표현 방식을 변환하는 예제입니다.
import datetime
# 현재 날짜 및 시간
now = datetime.datetime.now()
# 1. 기본 날짜 형식으로 변환
formatted_date = now.strftime('%Y-%m-%d')
print(formatted_date) # 출력: 2021-06-15 (예를 들면)
# 2. 미국식 날짜 형식 (월/일/연도)으로 변환
formatted_date = now.strftime('%m/%d/%Y')
print(formatted_date) # 출력: 06/15/2021
# 3. 요일, 날짜, 시간 형식으로 변환
formatted_date = now.strftime('%A, %d %B %Y %H:%M:%S')
print(formatted_date) # 출력: Tuesday, 15 June 2021 13:45:30 (예를 들면)
# 4. 12시간 형식과 AM/PM으로 변환
formatted_date = now.strftime('%m/%d/%Y %I:%M:%S %p')
print(formatted_date) # 출력: 06/15/2021 01:45:30 PM (예를 들면)
# 5. 연도의 처음부터 지난 날짜 수와 함께 변환
formatted_date = now.strftime('%j %Y')
print(formatted_date) # 출력: 166 2021 (예를 들면 2021년의 166번째 날)
# 6. 시간대 정보와 함께 변환 (지역에 따라 다를 수 있음)
formatted_date = now.strftime('%Y-%m-%d %H:%M:%S %Z')
print(formatted_date) # 출력: 2021-06-15 13:45:30 UTC (예를 들면)
# 7. UTC 오프셋을 포함하여 변환 (지역에 따라 다를 수 있음)
formatted_date = now.strftime('%Y-%m-%d %H:%M:%S %z')
print(formatted_date) # 출력: 2021-06-15 13:45:30 +0000 (예를 들면)
댓글남기기