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

使用pd.to_datetime转换DataFrame的DateTime列出现ParserError报错如何处理

报错原因

报错核心是待转换的时间字符串14-09-2021 10:39:00:00不符合pandas默认的时间解析规则:

  • 该字符串的秒级单位后多了一组用冒号分隔的数值(末尾的:00),标准时间格式中秒和毫秒/微秒的分隔符为英文句号.,而非冒号,导致默认解析器无法识别。
解决方法
  • 明确指定时间格式(最稳妥)
    直接通过format参数告知pandas当前字符串的结构,无需修改原始数据,代码如下:
# 格式说明:%d=日,%m=月,%Y=4位年,%H=小时,%M=分钟,%S=秒,%f=微秒
Interventions_df['From DateTime'] = pd.to_datetime(Interventions_df['From DateTime'], format='%d-%m-%Y %H:%M:%S:%f')
Interventions_df['To DateTime'] = pd.to_datetime(Interventions_df['To DateTime'], format='%d-%m-%Y %H:%M:%S:%f')
  • 预处理修正时间字符串格式
    先把不符合规范的冒号替换为标准的句号分隔符,再进行时间转换,适合需要统一时间格式的场景:
# 替换末尾秒后的冒号为句号
Interventions_df['From DateTime'] = Interventions_df['From DateTime'].str.replace(r':(\d+)$', r'.\1', regex=True)
Interventions_df['To DateTime'] = Interventions_df['To DateTime'].str.replace(r':(\d+)$', r'.\1', regex=True)

# 再执行时间转换
Interventions_df['From DateTime'] = pd.to_datetime(Interventions_df['From DateTime'], dayfirst=True)
Interventions_df['To DateTime'] = pd.to_datetime(Interventions_df['To DateTime'], dayfirst=True)
  • 添加容错参数(兜底方案)
    如果存在少量格式异常的脏数据,可添加errors='coerce'参数,将无法解析的字符串转换为空值NaT,避免代码直接中断,后续可单独排查异常行:
Interventions_df['From DateTime'] = pd.to_datetime(Interventions_df['From DateTime'], dayfirst=True, errors='coerce')
Interventions_df['To DateTime'] = pd.to_datetime(Interventions_df['To DateTime'], dayfirst=True, errors='coerce')

# 可通过以下代码筛选转换失败的异常行
invalid_rows = Interventions_df[Interventions_df['From DateTime'].isna() | Interventions_df['To DateTime'].isna()]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:39:01