[python] DataFrame 열 유형을 문자열에서 날짜 / 시간 (dd / mm / yyyy 형식)으로 변환

문자열의 DataFrame 열 ( dd / mm / yyyy 형식)을 datetimes 로 어떻게 변환 할 수 있습니까?



답변

가장 쉬운 방법은 다음을 사용하는 것입니다 to_datetime.

df['col'] = pd.to_datetime(df['col'])

그것은 또한 dayfirst유럽 ​​시대에 대한 논쟁을 제공합니다 (그러나 이것이 엄격하지는 않습니다 ).

여기 실제로 작동합니다.

In [11]: pd.to_datetime(pd.Series(['05/23/2005']))
Out[11]:
0   2005-05-23 00:00:00
dtype: datetime64[ns]

특정 형식을 전달할 수 있습니다 .

In [12]: pd.to_datetime(pd.Series(['05/23/2005']), format="%m/%d/%Y")
Out[12]:
0   2005-05-23
dtype: datetime64[ns]


답변

날짜 열이 ‘2017-01-01’형식의 문자열 인 경우 팬더 astype을 사용하여 날짜 시간으로 변환 할 수 있습니다.

df['date'] = df['date'].astype('datetime64[ns]')

나노초가 아닌 일 정밀도를 원하면 datetime64 [D]를 사용하십시오.

print(type(df_launath['date'].iloc[0]))

수확량

<class 'pandas._libs.tslib.Timestamp'>
pandas를 사용할 때와 동일합니다.

‘% Y- % m- % d’와 다른 형식으로 시도해 볼 수 있지만 적어도 작동합니다.


답변

까다로운 형식을 지정하려는 경우 다음을 사용할 수 있습니다.

df['date_col'] =  pd.to_datetime(df['date_col'], format='%d/%m/%Y')

format여기 에 대한 자세한 내용 :


답변

데이트 형식이 혼합되어 있으면 infer_datetime_format=True인생을 더 쉽게 만들기 위해 설정 하는 것을 잊지 마십시오

df['date'] = pd.to_datetime(df['date'], infer_datetime_format=True)

출처 : pd.to_datetime

또는 맞춤형 접근 방식을 원할 경우 :

def autoconvert_datetime(value):
    formats = ['%m/%d/%Y', '%m-%d-%y']  # formats to try
    result_format = '%d-%m-%Y'  # output format
    for dt_format in formats:
        try:
            dt_obj = datetime.strptime(value, dt_format)
            return dt_obj.strftime(result_format)
        except Exception as e:  # throws exception when format doesn't match
            pass
    return value  # let it be if it doesn't match

df['date'] = df['date'].apply(autoconvert_datetime)


답변