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

如何在Pyspark中从日期列提取字符串格式的年月数据

PySpark 提取日期列年月的实现方案

首先确认你的date列是日期/时间戳类型,如果是字符串格式需要先转换为日期类型,再做提取操作。

方法1:使用date_format内置函数(最推荐)

这是和Pandas写法逻辑最接近、性能最优的实现方式,直接指定格式输出即可:

from pyspark.sql.functions import date_format

# 直接生成格式为YYYYMM的年月字符串
tb = tb.withColumn("yearmon", date_format("date", "yyyyMM"))

如果原date列是字符串类型,需要先做类型转换:

from pyspark.sql.functions import to_date, date_format

# 示例中字符串日期格式为yyyy-MM-dd,可根据实际格式调整第二个参数
tb = tb.withColumn("date", to_date("date", "yyyy-MM-dd")) \
       .withColumn("yearmon", date_format("date", "yyyyMM"))

方法2:拼接年、月字段

也可以分别提取年、月后拼接,注意要用lpad给月份补前导0,避免1月输出为1而不是01:

from pyspark.sql.functions import year, month, lpad, concat

tb = tb.withColumn("yearmon", concat(year("date"), lpad(month("date"), 2, "0")))

注意:不要用自定义UDF实现该逻辑,PySpark内置函数是优化过的分布式执行逻辑,性能远高于自定义UDF。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:15:03