pandas to_datetime 如何识别混杂的中英文日期格式

10次阅读

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

pandas to_datetime 如何识别混杂的中英文日期格式

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
text=ZqhQzanResources