如何在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
相关产品推荐
相关产品推荐

