🔥알림🔥
    
    ① 테디노트 유튜브 - 
    구경하러 가기!
    
    ② 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 (예를 들면)
댓글남기기