使用pd.to_datetime转换snscrape导出的日期列出现解析错误如何解决?
解决方法
- 首先处理异常值并完成日期类型转换
你第一次报错是因为date_created列存在非日期格式的异常值(报错信息里的SylmiSeb就是异常值),给pd.to_datetime添加errors='coerce'参数,就能将无法解析的异常值自动转为空值(NaT),不会中断转换流程:
database_2018['date_created'] = pd.to_datetime(database_2018['date_created'], errors='coerce')
注:第二次报错是因为
pd.Timestamp仅支持转换单个时间值,不能直接处理整列的Series数据,该写法不适用于整列日期转换场景。
- 提取
YYYY-MM-DD格式的日期
转换为datetime类型后,通过dt属性提取日期部分即可:
- 如果需要字符串格式的日期,用:
database_2018['date_created'] = database_2018['date_created'].dt.strftime('%Y-%m-%d')
- 如果需要Python原生date对象格式,用:
database_2018['date_created'] = database_2018['date_created'].dt.date
可选:排查异常值
如果需要确认有哪些异常值,可以在备份原始列的前提下,执行以下代码查看所有无法解析为日期的原始内容:
invalid_values = database_2018[database_2018['date_created'].isna()]['date_created'].unique() print(invalid_values)
内容的提问来源于stack exchange,提问作者Shanti
相关产品推荐
相关产品推荐

