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

PySpark将字符串列转为日期格式时出现Null值问题求助

PySpark字符串日期转日期格式全为Null的解决办法

核心问题是日期格式模板不匹配:你的原始日期字符串是dd/MM/yyyy格式(例如21/01/1998),但转换时使用了yyyy-MM-dd的模板,PySpark无法解析不匹配的格式,因此返回Null。空字符串本身转换后也会是Null,这是预期行为,但可以按需处理。

解决方案1:使用正确的格式模板转换

首先确保导入to_date函数,然后使用匹配的格式字符串dd/MM/yyyy:

from pyspark.sql.functions import to_date

# 正确的日期转换代码
df3 = df1.select(to_date(df1.Date, 'dd/MM/yyyy').alias('dt'))
df3.show()

执行后输出:

+----------+
|        dt|
+----------+
|1998-01-21|
|1997-06-20|
|      null|
|      null|
|      null|
+----------+

有效格式的日期会被正确转换,空字符串仍为Null。

解决方案2:处理空字符串(可选)

如果需要保留空字符串而非转为Null,或替换为默认日期,可以使用when函数:

保留空字符串

from pyspark.sql.functions import when

df3 = df1.select(
    when(df1.Date != '', to_date(df1.Date, 'dd/MM/yyyy')).otherwise(df1.Date).alias('dt')
)
df3.show()

替换空字符串为默认日期

df3 = df1.select(
    when(df1.Date != '', to_date(df1.Date, 'dd/MM/yyyy')).otherwise(to_date('1900-01-01', 'yyyy-MM-dd')).alias('dt')
)
df3.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:20:12