如何在Pandas中将datetime64[ns]转为20180822格式?解决转换报错
解决datetime64转指定格式字符串(object类型)的问题
报错原因
你的代码报错是因为:原列是datetime64[ns]类型,转成字符串后是带时分秒的格式(如'2022-10-28 11:09:00'),但你调用pd.to_datetime时指定了format='%Y%m%d',这个格式要求输入是无分隔符的纯年月日字符串,两者不匹配导致报错。而且你的逻辑搞反了——你是要把datetime转成字符串,不是把字符串转成datetime。
正确实现代码
因为原列已经是datetime64[ns]类型,直接用pandas的dt.strftime方法即可完成格式转换,返回的就是object类型的字符串:
df_ICF_news['date'] = df_ICF_news['date'].dt.strftime('%Y%m%d')
额外处理:脏数据兼容
如果数据中存在非datetime格式的脏数据,先统一转换为datetime类型(错误值会转为NaT),再格式化:
# 先确保列是datetime类型,错误值转为NaT df_ICF_news['date'] = pd.to_datetime(df_ICF_news['date'], errors='coerce') # 再格式化,NaT会转为空字符串 df_ICF_news['date'] = df_ICF_news['date'].dt.strftime('%Y%m%d')
内容的提问来源于stack exchange,提问作者crist_9
相关产品推荐
相关产品推荐

