Pandas에서 문자열로 저장된 날짜 데이터를 실제 날짜/시간(datetime) 유형으로 변환하려면 to_datetime() 메서드를 사용하면 됩니다. 이 메서드는 다양한 형식의 문자열을 자동으로 인식하여 datetime64 유형으로 바꿔주기 때문에 데이터 분석 전처리 과정에서 매우 유용하게 활용됩니다.
1. 예제 DataFrame 생성하기
먼저 세 개의 열(컬럼)을 가진 DataFrame을 만들어 보겠습니다. 이 중 'Date_of_Purchase' 열은 날짜가 문자열 형태로 저장되어 있습니다.
import pandas as pd
# DataFrame 생성
dataFrame = pd.DataFrame({
'Product Category': ['Computer', 'Mobile Phone', 'Electronics', 'Stationery'],
'Product Name': ['Keyboard', 'Charger', 'SmartTV', 'Chairs'],
'Date_of_Purchase': ['10/07/2021', '20/04/2021', '25/06/2021', '15/02/2021'],
})
이 상태에서는 날짜가 단순한 문자열(object)이기 때문에 날짜 연산(예: 기간 계산, 정렬, 필터링)을 수행할 수 없습니다.
2. to_datetime()으로 문자열을 날짜로 변환하기
다음과 같이 pd.to_datetime() 함수를 적용하면 해당 열의 문자열이 datetime 유형으로 변환됩니다.
dataFrame['Date_of_Purchase'] = pd.to_datetime(dataFrame['Date_of_Purchase'])
전체 코드
import pandas as pd
# DataFrame 생성
dataFrame = pd.DataFrame({
'Product Category': ['Computer', 'Mobile Phone', 'Electronics', 'Stationery'],
'Product Name': ['Keyboard', 'Charger', 'SmartTV', 'Chairs'],
'Date_of_Purchase': ['10/07/2021', '20/04/2021', '25/06/2021', '15/02/2021'],
})
print("\nDataFrame...\n", dataFrame)
# 문자열 날짜를 datetime 유형으로 변환
dataFrame['Date_of_Purchase'] = pd.to_datetime(dataFrame['Date_of_Purchase'])
print("\n변환 후 DataFrame...\n", dataFrame)
3. 실행 결과
위 코드를 실행하면 아래와 같은 출력 결과를 확인할 수 있습니다.
DataFrame...
Date_of_Purchase Product Category Product Name
0 10/07/2021 Computer Keyboard
1 20/04/2021 Mobile Phone Charger
2 25/06/2021 Electronics SmartTV
3 15/02/2021 Stationery Chairs
변환 후 DataFrame (문자열 날짜가 datetime으로 변환됨)...
Date_of_Purchase Product Category Product Name
0 2021-10-07 Computer Keyboard
1 2021-04-20 Mobile Phone Charger
2 2021-06-25 Electronics SmartTV
3 2021-02-15 Stationery Chairs
출력 결과를 보면 'Date_of_Purchase' 열의 값이 YYYY-MM-DD 형식의 표준 날짜 표기로 변경된 것을 알 수 있습니다. 이제 이 열은 datetime64 유형이므로 .dt.year, .dt.month 같은 속성으로 연도·월·일을 추출하거나, 특정 기간 조건으로 데이터를 필터링하는 등 다양한 시계열 연산을 자유롭게 수행할 수 있습니다.
참고: 형식 지정 옵션
날짜 형식이 일관되어 있다면 format 인자를 사용해 변환 속도를 높이고 오류를 방지할 수 있습니다. 예를 들어 'DD/MM/YYYY' 형식이라면 다음과 같이 지정합니다.
dataFrame['Date_of_Purchase'] = pd.to_datetime(
dataFrame['Date_of_Purchase'], format='%d/%m/%Y'
)
또한 파싱할 수 없는 값이 있을 때 전체 변환이 실패하지 않도록 하려면 errors='coerce' 옵션을 추가하면, 잘못된 값은 NaT(Not a Time)으로 처리됩니다.