pd.to_datetime() 默认具备自动识别能力,能解析多种常见日期格式,支持 exact=False 提取混杂字符串中的日期,errors 参数可控制容错行为,读 CSV 时可用 parse_dates 一步解析。

直接用 pd.to_datetime(),它默认就带自动识别能力,不需要你手动写格式。只要字符串里有可辨识的日期成分,pandas 大概率能猜出来。
自动识别基本用法
多数常见格式(如 "2023-10-01"、"01/15/2024"、"15-Oct-2023"、"2023年10月1日")都能被 pd.to_datetime() 无参数调用直接解析:
- 不传
format参数时,pandas 内部会调用guess_datetime_format尝试推断格式 - 支持 ISO 标准、美式、欧式、中文、带时间、带分隔符甚至部分乱序写法
- 遇到无法识别的字符串,默认转为
NaT(类似 NaN 的时间缺失值)
处理含干扰字符的混杂字符串
如果日期前后裹着其他文本(比如 "' : 07/01/2020 23:25'" 或 "订单日期:2024.05.20"),关键加 exact=False:
-
exact=False让 pandas 在整串中“找”符合日期逻辑的部分,而不是要求全字符串严格匹配 - 配合
format可进一步约束预期模式,例如format='%m/%d/%Y'+exact=False能从 "日期:05/20/2024 14:30" 中精准提取 - 若仍失败,可先用正则粗筛出疑似日期片段再传入解析
控制解析行为与容错
混杂数据常含错误或空值,用 errors 参数明确处理策略:
-
errors='coerce':错的变NaT,最常用,避免中断整个列 -
errors='ignore':原样保留输入(不推荐,类型没变) -
errors='raise':报错,适合调试阶段快速定位脏数据 - 还可搭配
dayfirst=True或yearfirst=True解决 "01/02/2023" 类歧义
读 CSV 时一步到位解析
如果是从文件加载,别等读完再转换——用 parse_dates 参数在读取阶段就完成识别:
pd.read_csv('data.csv', parse_dates=['date_col'])- 支持多列合并解析:
parse_dates=[['year', 'month', 'day']] - 还能指定转换器:
date_parser=lambda x: pd.to_datetime(x, errors='coerce')










