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

Python日期解析异常处理:转换有效日期并忽略错误行

解决pd.to_datetime转换错误日期时的报错问题

这问题我碰到过好多次了,直接用pandas自带的参数就能搞定,完全不用手动排查错误行!

核心解决方案:使用errors='coerce'参数

pd.to_datetime()提供了errors参数,当设置为'coerce'时,所有无法正确解析的日期值会被转换成NaT(pandas中表示时间缺失值的类型),而不是抛出中断程序的错误。这样就能保留所有正确转换的行,同时自动标记错误行。

示例代码:

import pandas as pd

# 假设你的日期列名为'date_str',注意格式符要用标准的%d/%m/%Y
df['formatted_date'] = pd.to_datetime(df['date_str'], format='%d/%m/%Y', errors='coerce')

小提醒:pandas的日期格式符里,4位年份的正确写法是%Y,不是YYYY,别写错哦。

可选:查看错误行(如果需要)

转换完成后,你可以轻松筛选出那些无法解析的行,方便后续分析错误类型:

# 筛选出转换失败的行
invalid_dates = df[df['formatted_date'].isna()]
print("错误日期行:")
print(invalid_dates)

进阶:针对特定错误格式预处理(可选)

如果发现有一些重复出现的错误格式(比如你提到的'0199'应该是'1999'),可以先对字符串做预处理再转换:

# 用正则替换修复开头多写0的年份(比如'0199'→'1999')
df['fixed_date_str'] = df['date_str'].str.replace(r'(\d{2}/\d{2}/)0(\d{3})$', r'\11\2', regex=True)
# 再进行转换
df['formatted_date'] = pd.to_datetime(df['fixed_date_str'], format='%d/%m/%Y', errors='coerce')

不过你说错误无规律,这一步可以跳过,直接用errors='coerce'就足够解决问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:20:50