You need to enable JavaScript to run this app. Pandas DataFrame字符串类型字段中日期识别失败问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame字符串类型字段中日期识别失败问题咨询

失败原因

  • 正则规则存在书写错误:
    1. 你修改后适配逗号的正则漏写了匹配数字的转义符\:第二个位置的d应为\d,年份位置漏写\d,即使要匹配逗号分隔的格式,正确写法也应该是r'\d{1,2}, \d{1,2}, \d{2,4}',且该规则本身也不符合你的真实数据场景
    2. 你对数据格式判断有误:之前返回的[7, 23, 2019]是findall方法返回的多匹配结果列表结构,不是单元格原始字符串内真的用逗号分隔日期段。从你补充的CSV原始格式来看,日期的分隔符是正斜杠/,既不是反斜杠也不是逗号。
  • 第一版代码的正则匹配的是反斜杠分隔的日期,和原始数据的正斜杠格式不匹配,因此返回空结果。

正确实现方案

你不需要手动写正则提取,pandas内置的日期转换方法可以直接识别这种月/日/年格式的日期:

# 遍历所有object类型列,尝试转换为日期格式
for col in df.select_dtypes(include=['object']).columns:
    # errors='coerce'表示无法转换为日期的字段会返回空值NaT,方便筛选真正的日期列
    df[col] = pd.to_datetime(df[col], format='%m/%d/%Y', errors='coerce')
    # 不需要强制指定格式可去掉format参数,让pandas自动推断
    # df[col] = pd.to_datetime(df[col], errors='coerce')

如果你一定要用正则提取日期字符串,可以使用下面的规则:

for col in df.select_dtypes(include=['object']).columns:
    print(df[col].str.findall(r'\d{1,2}/\d{1,2}/\d{2,4}'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 07:48:03