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

PySpark技术问询:如何将DataFrame中字符串日期转为日期格式

解决Spark DataFrame日期列转换问题

你的现有代码核心问题是指定的日期格式与原始数据不匹配——原始字符串是无分隔符的yyyyMMdd格式(示例值20220124),但代码里用了yyyy-MM-dd,导致无法正确解析日期。

如果要严格按照“先转成2022-01-24格式的字符串,再转为日期类型”的步骤操作,可分两步实现:

  • 第一步:先将原始无分隔符字符串解析为日期类型,再转成带分隔符的字符串格式
  • 第二步:把带分隔符的字符串重新转为日期类型

代码示例:

from pyspark.sql.functions import to_date, date_format

# 生成带分隔符的日期字符串
df_temp = df.withColumn('Date_str', date_format(to_date(df.Date, 'yyyyMMdd'), 'yyyy-MM-dd'))
# 将字符串转为日期类型,同时删除临时列
df_new = df_temp.withColumn('Date', to_date(df_temp.Date_str, 'yyyy-MM-dd')).drop('Date_str')

不过更高效的方式是跳过中间字符串转换步骤,直接用原始格式解析为日期类型:

from pyspark.sql.functions import to_date

df_new = df.withColumn('Date', to_date(df.Date, 'yyyyMMdd'))

因为Spark的DateType存储的是日期值,默认显示时会以yyyy-MM-dd格式呈现,无需额外生成中间字符串,性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:01:57