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


답변:


475

가장 쉬운 방법은 다음을 사용하는 것입니다 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]

재생 해 주셔서 감사합니다. 형식을 정의 할 수 있습니까? '% d / % m / % Y'처럼? 매우 감사
근지점


1
배열을 전달하는 @shootingstars DatetimeIndex(df['col']).to_pydatetime()가 작동해야합니다.
Andy Hayden

1
Nvm, 너무 일찍 댓글을 달았습니다. SettingWithCopyWarning충분한 재료를 찾으십시오
Sundeep

2
@daneshjai 이중 괄호는 열을 Series로 가져 오는 단일 괄호와 비교하여 하나의 열로 DataFrame을 만듭니다.
Andy Hayden

36

날짜 열이 '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'와 다른 형식으로 시도해 볼 수 있지만 적어도 작동합니다.



2

데이트 형식이 혼합되어 있으면 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)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.