pd.to_datetime可自动识别常见中英文混合日期格式,如“2023年10月15日”“Oct 15, 2023”,推荐使用format='mixed'提升鲁棒性,并配合errors='coerce'处理异常。

pd.to_datetime 能自动识别常见中英文混合日期格式,比如“2023年10月15日”“Oct 15, 2023”“星期一, 2024-03-18”,但需注意解析逻辑和边界情况。
支持的中英文混合格式类型
函数内置本地化解析能力,可识别:
- 中文年月日:“2025年01月07日”“二〇二五年一月七日”(简体环境下基本兼容)
- 英文月份缩写:“Jan 07, 2025”“Dec 25, 2024”“15-Mar-2023”
- 中英混排:“2024年12月25日 Wednesday”“星期三, 2025/01/08”
- 带标点或空格的变体:“【2023-09-10】”“2024.02.29(农历)”(只要核心日期结构清晰,通常能提取)
format='mixed' 提升混合格式鲁棒性
当数据中中英文、分隔符、顺序高度不统一时,推荐显式启用 format='mixed':
- 它会逐个尝试多种常见模式(包括中文、英文、数字型),比默认自动推断更稳定
- 配合 errors='coerce' 可避免单条异常中断整个列转换
- 示例:
pd.to_datetime(series, format='mixed', errors='coerce')
中文格式需注意的细节
不是所有中文表达都默认支持,以下情况建议预处理或指定 format:
- “零三年一月七日”“廿三日”等古风/口语写法 —— 不识别,需先标准化为阿拉伯数字
- “2025/01/07 上午”“下午3:30” —— 时间部分可能被忽略,若需保留,应搭配完整 format 如
'%Y/%m/%d %p%I:%M' - 含“农历”“闰月”字样 —— pandas 不解析农历,会报错或返回 NaT,须提前移除或标记
遇到识别错误怎么办
若部分值转成 NaT 或结果明显错位(如“07/01/2025”被当成 2025年7月1日而非1月7日):
- 先用
series.str.contains('年|月|日|Jan|Feb')检查是否真混杂 - 对中文主导列,可统一替换“年”“月”“日”为空格,再用
format='%Y %m %d' - 对英文主导列,加
dayfirst=True防止 DD/MM/YYYY 被误读为 MM/DD/YYYY










