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

如何在PySpark DataFrame中提取首个数字字符串并转为日期列

解决方案:提取首个日期格式数字并转换为日期列

不用绕弯子拆分数组,直接对languages字段用正则提取一步搞定——匹配首个连续8位数字串(对应YYYYMMDD日期格式),再转成日期类型即可。

完整代码示例

data = [
 ("James","Java_Scala_C++_20230510_2023051345"),
 ("Mindy", "Spark_Java_20211014_20211014255_C++"),
 ("Julia", "CSharp_20200115_VB")
]

from pyspark.sql.types import StringType, StructType,StructField
from pyspark.sql.functions import regexp_extract, to_date

schema = StructType([ 
    StructField("name",StringType(),True), 
    StructField("languages",StringType(),True)
  ])

df = spark.createDataFrame(data=data,schema=schema)

# 新增列:提取首个8位数字并转为日期类型
df = df.withColumn("first_date", to_date(regexp_extract("languages", r"(\d{8})", 1), "yyyyMMdd"))

# 按你要的格式输出结果
for row in df.collect():
    print(f"{row.name}: {row.first_date.strftime('%Y%m%d')}")

代码说明

  • regexp_extract("languages", r"(\d{8})", 1):从languages字符串里抓第一个连续8位数字,第三个参数1表示取正则表达式中第一个括号捕获的内容
  • to_date(..., "yyyyMMdd"):把提取到的数字串转换成PySpark标准日期类型
  • 最后循环遍历的代码会输出你期望的文本格式

运行结果

执行后会输出:

James: 20230510
Mindy: 20211014
Julia: 20200115

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:55:00