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

Pandas如何正确提取无固定格式列中的年份数据

问题场景

现有大型Pandas DataFrame,其中col列混合存储日期与地点信息,无统一格式,需要从该列提取年份存入新列yearcorrect。目前已发现该列存在三类格式样例:

col
February 28, 2020 (United States)
April 1990 (United States)
1981 (United States)

期望输出效果:

col                                         yearcorrect
February 28, 2020 (United States)           2020
April 1990 (United States)                  1990
1981 (United States)                        1981

之前尝试的实现代码:

df['yearcorrect'] = df['col'].astype(str).str.split(', ').str[-1].astype(str).str[:4]

该代码仅能正确处理第一类、第三类格式,处理第二类April 1990 (United States)时会错误返回"Apri",无法适配所有格式。

实现方案

直接用正则表达式提取字符串中的4位年份即可,不需要依赖固定分隔符拆分,适配所有已知格式,代码如下:

df['yearcorrect'] = df['col'].astype(str).str.extract(r'(\d{4})')

方案说明

  • 正则规则(\d{4})会匹配字符串中第一组连续4位数字,三类样例的匹配结果完全符合预期:
    • 匹配February 28, 2020 (United States)得到2020
    • 匹配April 1990 (United States)得到1990
    • 匹配1981 (United States)得到1981
  • 该方案不依赖固定的字段分隔符、字段位置,对格式混乱的文本适配性更强。如果后续数据中存在其他非年份的4位数字干扰,可以收紧正则规则,限定年份范围为1900-2099,将正则替换为r'((?:19|20)\d{2})'即可避免误提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 03:09:28