使用PySpark将字符串列转为日期类型时返回空值的问题咨询
解决Spark中to_date转换日期后返回null的问题
你的问题出在日期格式不匹配:
- Spark的
to_date函数默认只识别yyyy-MM-dd格式的字符串(比如2022-01-23) - 而你的日期是
dd/MM/yyyy格式(比如23/01/2022),格式不匹配就会返回null
另外注意:原代码里把show()的结果赋值给了dfwdate,但show()方法返回的是None,会导致后续无法使用这个DataFrame,要分开执行赋值和展示操作。
修改后的代码:
# 显式指定日期格式为dd/MM/yyyy dfwdate = dfworkers2.withColumn("Disponibility", to_date("Disponibility", "dd/MM/yyyy")) # 单独调用show()展示结果 dfwdate.show(truncate=False)
如果你的数据里存在多种日期格式,可以用coalesce尝试多种格式匹配:
from pyspark.sql.functions import coalesce, to_date dfwdate = dfworkers2.withColumn( "Disponibility", coalesce( to_date("Disponibility", "dd/MM/yyyy"), to_date("Disponibility", "MM/dd/yyyy"), to_date("Disponibility", "yyyy-MM-dd") ) ) dfwdate.show(truncate=False)
内容的提问来源于stack exchange,提问作者BENOTH7
相关产品推荐
相关产品推荐

