PySpark如何提取字符串格式日期列中的月份?
PySpark从字符串日期列提取两位月份值的方法
针对日期格式固定为yyyy-MM-dd的字符串列,有两种常用方法可以提取两位格式的月份(如"07"):
方法一:日期类型转换后提取(兼容格式校验)
先将字符串转为日期类型,再通过格式化函数提取两位月份,适合存在格式不规范数据的场景,格式错误的行会返回null便于后续处理:
from pyspark.sql import functions as F # 替换df为你的DataFrame名称,date_str为目标日期列名 df = df.withColumn( "month", F.date_format(F.to_date(F.col("date_str"), "yyyy-MM-dd"), "MM") )
方法二:直接字符串截取(高效)
如果日期列格式完全统一,直接截取字符串中对应位置的字符效率更高:
from pyspark.sql import functions as F # 从第6位开始(Spark的substring起始位置从1计数),截取2个字符 df = df.withColumn( "month", F.substring(F.col("date_str"), 6, 2) )
内容的提问来源于stack exchange,提问作者Nabs335
相关产品推荐
相关产品推荐

