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

PySpark从标题列提取连续4位数字生成新列的技术问题

PySpark提取DataFrame标题列中的连续四位数字

你的原有方法失效的原因是依赖「取字符串最后四位」的逻辑,仅适用于年份恰好位于标题末尾的场景,当标题末尾是其他内容时(比如"Incredible"的末尾字母、"Skate (1991) board"的末尾单词),就会提取错误结果。

正确的做法是使用PySpark的regexp_extract函数,通过正则表达式精准匹配任意位置的连续四位数字:

import pyspark.sql.functions as F

# 提取标题中任意位置的连续4位数字,生成yearOfRelease列
movies_DF = movies_DF.withColumn(
    "yearOfRelease",
    F.regexp_extract("title", r"\d{4}", 0)
)

参数说明

  • regexp_extract的第三个参数0表示提取整个匹配的内容(正则\d{4}匹配任意4个连续数字)。
  • 如果需要更精准匹配年份(仅提取19XX或20XX格式的年份),可以将正则改为r"(19|20)\d{2}",避免提取无关的四位数字。

处理无匹配的情况

如果需要过滤掉没有提取到年份的行(比如"Incredible"这类无年份的标题),可以添加过滤条件:

movies_DF = movies_DF.filter(F.col("yearOfRelease") != "")

测试结果

针对你提供的标题样本,提取结果如下:

  • Under Ground2(1990) → 1990
  • Waterword(1995) → 1995
  • Incredible → 空字符串(可通过过滤移除)
  • Skate (1991) board → 1991
  • That girl 2002 → 2002

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:25:28