You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas将date类型列转datetime遇ValueError,求解决方法

解决方案

错误原因

你使用的unit='ms'参数,是用来将毫秒级时间戳数字转换为datetime类型的,但你的列是date格式的日期字符串(如0000-12-30),参数与数据类型不匹配,导致转换报错。

正确转换方法

基础场景(无特殊日期)

直接移除unit='ms'参数,pandas会自动识别日期字符串格式完成转换:

SourceTableData["StartDate"] = pd.to_datetime(SourceTableData["StartDate"])
SourceTableData["NextStartDate"] = pd.to_datetime(SourceTableData["NextStartDate"])

含特殊日期的场景(如0000-12-30)

pandas依赖的datetime模块不支持公元0年的日期,若数据中存在这类特殊值,可按以下方式处理:

  • 方式1:将无法转换的特殊值转为空时间值NaT,使用errors='coerce'参数:
SourceTableData["StartDate"] = pd.to_datetime(SourceTableData["StartDate"], errors='coerce')
SourceTableData["NextStartDate"] = pd.to_datetime(SourceTableData["NextStartDate"], errors='coerce')
  • 方式2:先替换特殊日期为有效日期,再执行转换:
# 示例:将0000-12-30替换为1970-01-01,可根据业务需求调整目标日期
SourceTableData["StartDate"] = SourceTableData["StartDate"].replace('0000-12-30', '1970-01-01')
SourceTableData["NextStartDate"] = SourceTableData["NextStartDate"].replace('0000-12-30', '1970-01-01')

# 转换为datetime类型
SourceTableData["StartDate"] = pd.to_datetime(SourceTableData["StartDate"])
SourceTableData["NextStartDate"] = pd.to_datetime(SourceTableData["NextStartDate"])

内容的提问来源于stack exchange,提问作者Rohit Kulkarni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 10:52:48