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

Pandas合并日期时间列转datetime时dateutil.parser报错如何解决

问题原因分析

从报错日志可以直接定位根因:你的数据中存在非法时间字符串,比如报错里的09 Sep 2021 84'。时间列并非全部是样例中的HH:MM合法格式,存在脏数据:

  • 出现超过23的小时值、超过59的分钟值
  • 存在多余的无效符号(比如报错中的单引号)
解决步骤

第一步:排查清洗脏数据

先找出所有不符合时间格式的异常行,根据业务规则处理:

# 匹配HH:MM合法格式,筛选出不符合的异常行
invalid_rows = df[~df['time'].str.match(r'^([01]?[0-9]|2[0-3]):[0-5][0-9]$')]
print(invalid_rows)

你可以根据业务场景选择删除异常行、修正异常值,或者后续将异常值转为时间缺失值。

第二步:执行日期时间转换

方案1:容错转换(自动处理非法值)

如果接受异常时间转为缺失值NaT,可以加errors='coerce'参数避免报错中断:

df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'], errors='coerce')

方案2:指定格式转换(效率更高、解析更准确)

清洗完所有脏数据后,可以指定匹配你数据的格式参数,提升转换效率,避免自动解析出现偏差:

df['datetime'] = pd.to_datetime(df['date'] + ' ' + df['time'], format='%d %b %Y %H:%M')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:12:02