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

如何从包含多种不同日期格式的数据列中提取日期?

示例数据截图

你之前用的datefinder库已经多年未更新,对非英文日期、夹杂冗余文本的日期识别漏判率很高,不建议继续使用。以下是经过实测可用的日期提取工具和落地方案:

可用的自动日期提取库
  • dateparser:目前对多格式日期兼容性最好的开源库,支持中文、英文等多语言,能识别「2024年6月18日」「23/12/5」「Aug 9 2022」「1周前」这类不同写法的日期,自带文本扫描能力,不需要提前手动截取数字片段,适配混杂大量无关文本的提取场景。
  • python-dateutil:老牌日期解析工具,解析速度快,对标准、半标准格式的日期识别准确率极高,缺点是无法直接从长文本里定位日期片段,对中文格式、非标准写法支持弱,适合初步清洗后的纯日期文本解析。
  • cn2an:适配中文场景的辅助工具,可以把「二〇二四年三月」「腊月初八」这类带中文数字的日期转成阿拉伯数字格式,配合其他解析库使用,覆盖中文特殊日期写法。
  • pandas.to_datetime:结构化表格批量处理的首选,支持自动推断常见日期格式,处理万行以上数据的速度比逐行调用第三方解析库快10倍以上,适合列内日期格式差异不大的批量处理场景。
不同格式日期的可行提取方案
  1. 先做基础文本归一化
    先把目标列统一转为字符串类型,统一全角/半角符号,去掉无关的特殊字符、首尾空白,这一步能解决30%以上的解析失败问题,参考代码:
    import pandas as pd
    # 统一字符格式,去掉无关特殊符号
    df['target_col'] = (
        df['target_col']
        .astype(str)
        .str.replace(r'[^\w\s年月日/\-\.]', '', regex=True)
        .str.replace(r'[/]', '/', regex=True)
        .str.replace(r'[—-]', '-', regex=True)
        .str.strip()
    )
    
  2. 按数据场景选解析逻辑
    • 长文本混杂日期、格式跨度大的场景:直接用dateparser.search_dates自动扫描整段文本,返回所有识别到的日期对象,不需要手动写正则匹配,参考代码:
      import dateparser
      def extract_all_dates(text):
          # 同时识别中文、英文日期
          match_res = dateparser.search.search_dates(text, languages=['zh', 'en'])
          return [item[1] for item in match_res] if match_res else None
      
      df['extracted_date'] = df['target_col'].apply(extract_all_dates)
      
    • 日期格式相对统一的结构化表格场景:直接用pandas.to_datetime批量解析,设置errors='coerce'自动把解析失败的值转为空值,方便后续二次处理,参考代码:
      df['extracted_date'] = pd.to_datetime(df['target_col'], errors='coerce', infer_datetime_format=True)
      
    • 存在中文数字日期、农历、季度等特殊格式的场景:先用对应规则(正则+cn2an转换)把日期片段从文本里截取出来,再传给解析库处理,比全量文本扫描的准确率高很多。比如匹配带中文数字的年月片段,可以先用正则r'([零〇一二三四五六七八九十]{4})年([一二三四五六七八九十]{1,2})月'捞出片段,转成阿拉伯数字后再解析。
  3. 漏判数据兜底处理
    第一轮解析完成后,把返回空值的条目单独筛出来,提取文本里的所有连续数字片段,按照日期的数值逻辑(年份范围1900-当前年、月份1-12、日期1-31)做组合匹配,能覆盖绝大多数漏识别的场景;剩下极个别特殊写法的条目,单独加规则适配即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:06:11