문자열의 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)