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

Jupyter Notebook中pd.to_datetime转换日期时间出现格式不匹配报错如何解决?

报错根因

从报错日志的最后一行可直接定位问题:你指定的时间格式与数据实际格式不匹配,存在两处差异:

  • 年月日分隔符不匹配:你设置的格式用/分隔,但实际数据用-分隔
  • 时间精度不匹配:你设置的格式包含秒位%S,但实际数据只有时、分两个时间维度,没有秒值
排查步骤
  • 先抽样确认字段整体格式,执行代码:
    print(Uber_2014['Date/Time'].head(20))
  • 排查是否存在混合格式的脏数据,执行代码统计不同长度的字符串占比:
    print(Uber_2014['Date/Time'].str.len().value_counts())
解决方案

方案1:匹配实际格式手动指定(效率最高)

如果全量数据统一为月-日-年 时:分的格式,直接修改format参数即可:

Uber_2014['Date/Time'] = pd.to_datetime(Uber_2014['Date/Time'], format="%m-%d-%Y %H:%M")

方案2:兼容脏数据场景

如果存在部分格式异常的脏数据,添加errors='coerce'参数将不符合格式的值转为空时间值NaT,后续可单独过滤处理异常数据:

Uber_2014['Date/Time'] = pd.to_datetime(Uber_2014['Date/Time'], format="%m-%d-%Y %H:%M", errors='coerce')
# 查看转换失败的异常数据
print(Uber_2014[Uber_2014['Date/Time'].isna()]['Date/Time'])

方案3:自动推断格式(兼容性最强)

如果确认数据存在多种混合格式,可省略format参数让pandas自动推断格式:

Uber_2014['Date/Time'] = pd.to_datetime(Uber_2014['Date/Time'], infer_datetime_format=True)
结果验证

转换完成后执行以下代码确认转换成功:

  • 查看字段类型:print(Uber_2014['Date/Time'].dtype),输出为datetime64[ns]即为成功
  • 抽样查看转换结果:print(Uber_2014['Date/Time'].head(10))

内容的提问来源于stack exchange,提问作者Jigar Patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:15:02