【问题标题】:How to cast a string column to date having two different types of date formats in Pyspark如何在 Pyspark 中将字符串列转换为具有两种不同类型日期格式的日期
【发布时间】:2023-01-16 05:58:41
【问题描述】:
我有一个字符串类型的数据框列,其中包含日期。我想将该列从字符串转换为日期,但该列包含两种类型的日期格式。
我尝试使用 to_date 函数,但它没有按预期工作,并且在应用函数后给出空值。
下面是我在 df col(datatype - string) 中得到的两种日期格式
我尝试应用 to_date 函数,下面是结果
请告诉我如何解决此问题并仅以一种格式获取日期列
提前致谢
【问题讨论】:
标签:
apache-spark
pyspark
apache-spark-sql
databricks
【解决方案1】:
您可以使用 pyspark.sql.functions.coalesce 返回列列表中的第一个非空结果。所以这里的技巧是使用多种格式进行解析并采用第一个非空格式:
from pyspark.sql import functions as F
df = spark.createDataFrame([
("9/1/2022",),
("2022-11-24",),
], ["Alert Release Date"])
x = F.col("Alert Release Date")
df.withColumn("date", F.coalesce(F.to_date(x, "M/d/yyyy"), F.to_date(x, "yyyy-MM-dd"))).show()
+------------------+----------+
|Alert Release Date| date|
+------------------+----------+
| 9/1/2022|2022-09-01|
| 2022-11-24|2022-11-24|
+------------------+----------+