Table of Contents

Python

[파이썬] 날짜 형식 datetime

꼬꼬마코더 2024. 5. 10. 15:47
728x90

날짜 형식이 있는 데이터가 있다면 데이터를 다루기 전 컬럼을 datetime type으로 설정해 주는 것이 좋다.

왜냐하면 여러 데이터들을 다룰 때 날짜로 join해주는 경우가 많기 때문이다. 이 때 datatype을 통일해줘야 편하다.

또한 날짜 컬럼을 활용하여 년,월,일,주,요일 등의 기준으로 데이터를 가공하게 되는 경우가 많기 때문에 datetime 형식으로 바꿔줘야 한다.

날짜 컬럼이 있다면 먼저 컬럼의 datatype을 확인해야 한다.

예를 들어 20210130 와 같은 데이터가 들어 있어도 int형일 수 있으므로 dataframe.info() 를 통해 컬럼의 datatype을 확인해야 한다.

위에서 보면 일자 컬럼이 int64형이다.

import datetime

SM_sc_df['일자'] = pd.to_datetime(SM_sc_df['일자'].astype(str), format='%Y%m%d')

이렇게 하면 datetime으로 변한다.

 

그런데 이렇게 하면 datetime 메서드를 써도 object가 된다.

#(int->object)
#1.먼저 string으로 바꾼다

SM_sc_df['일자'] = SM_sc_df['일자'].astype('str') 

#(object->object)
#2.datetime으로 바꾸고 시간을 제외하기 위해 dt.date를 붙인다.

SM_sc_df['일자'] = pd.to_datetime(SM_sc_df['일자']).dt.date

 

SM_sc_df[일자] 컬럼은 Python의 `date` 객체로 변환되며, 이는 `datetime.date` 타입이다. `datetime.date` 객체는 시간 정보를 포함하지 않는 날짜만을 나타내는 객체로, pandas에서는 이를 `object` 타입으로 처리한다. 따라서, `dtype`이 `object`로 표시되는 것이 맞다.

다시 datetime으로 바꿔보자. 현재 20200101 모양이니까 format 인자를 %Y%m%d로 넣어준다.

 

만약 2020-01-01 형식을 20200101형식으로 바꾸려면? (datetime64[ns] -> object)

SM_sc_df['일자'] = SM_sc_df['일자'].dt.strftime('%Y%m%d')

datetime.strftime을 써야 한다. 다시 20200101형식을 2020-01-01형식으로 바꾸려면? (datetime64[ns] -> object)

SM_sc_df['일자'] = SM_sc_df['일자'].dt.strftime('%Y-%m-%d')

이렇게 해주면 된다.

다시 2020-01-01 형식을 20200101형식으로 바꾸려면? (object->datetime64[ns]->obejct)

SM_sc_df['일자'] = pd.to_datetime(SM_sc_df['일자'])
SM_sc_df['일자'] = SM_sc_df['일자'].dt.strftime('%Y%m%d')

아니면 이렇게 한 번에 바꿔줄 수 있다. (object->datetime64[ns]->obejct)

SM_sc_df['일자'] = pd.to_datetime(SM_sc_df['일자']).dt.date

 

이렇게 날짜 컬럼이 object형이면 dataframe.info()해서 dtype을 확인하고 최종적으로 datetime형식으로 바꿔주도록 한다. 

SM_sc_df['일자'] = pd.to_datetime(SM_sc_df['일자'], format='%Y%m%d')