PySpark中如何将字符串转为日期?转换后出现Null值求解
解决PySpark字符串转日期返回Null的问题
问题出在日期格式字符串不匹配:你的输入字符串是2019.06.24 12:01:19,格式为年.月.日 时:分:秒,但你用了MM/dd/yyyy(月/日/年)来解析,PySpark无法识别对应格式,因此转换失败返回Null。
修正后的代码
from pyspark.sql import SparkSession from pyspark.sql.functions import to_date spark = SparkSession.builder.appName('SparkByExamples.com').getOrCreate() data_source_df = spark.createDataFrame( data = [ ("1","2019.06.24 12:01:19")], schema=["id","input"] ) # 使用与输入字符串匹配的格式解析 data_source_df = data_source_df.withColumn("input", to_date("input", "yyyy.MM.dd HH:mm:ss")) data_source_df.show()
执行结果
+---+----------+ | id| input| +---+----------+ | 1|2019-06-24| +---+----------+
关键说明
- 若只需要提取日期部分(无需时分秒),使用
yyyy.MM.dd作为格式字符串也能正确解析。 - 常见日期格式符对应关系:
yyyy:4位年份MM:2位月份dd:2位日期HH:24小时制小时mm:分钟ss:秒- 字符串中的分隔符(
.、/、-等)必须与格式字符串完全一致
内容的提问来源于stack exchange,提问作者Anos
相关产品推荐
相关产品推荐

