Python 在一个pyspark数据帧中从两种不同的时间戳格式获取日期

Python 在一个pyspark数据帧中从两种不同的时间戳格式获取日期,python,apache-spark,pyspark,timestamp,Python,Apache Spark,Pyspark,Timestamp,我有一个pyspark数据帧,它有一个时间戳字段。但是它包含两种类型的时间戳格式(都是字符串) 如何在同一pyspark数据框中创建另一个“日期”列,该列仅捕获基于时间戳字段的日期? 理想的结果如下所示 +----------+---------------------+ | date|timestamp | +----------+----------------------+ |2019-06-06| 06-06-2019,17:15:46 | +------

我有一个pyspark数据帧,它有一个时间戳字段。但是它包含两种类型的时间戳格式(都是字符串)

如何在同一pyspark数据框中创建另一个“日期”列,该列仅捕获基于时间戳字段的日期? 理想的结果如下所示

+----------+---------------------+
|      date|timestamp            |
+----------+----------------------+
|2019-06-06| 06-06-2019,17:15:46 |
+----------+----------------------+
|2020-01-01|2020-01-01T06:07:22.000Z|

我认为我们需要为这种情况定义一个函数,并在数据帧中使用该函数

示例:

from pyspark.sql.functions import coalesce, col, to_date

def dynamic_date(col, frmts=("MM-dd-yyyy", "yyyy-MM-dd")):
    return coalesce(*[to_date(col, i) for i in frmts])

df.show(10,False)
#+------------------------+
#|timestamp               |
#+------------------------+
#|06-06-2019,17:15:46     |
#|2020-01-01T06:07:22.000Z|
#+------------------------+

df.withColumn("dd",dynamic_date(col("timestamp"))).show(10,False)
#+------------------------+----------+
#|timestamp               |dd        |
#+------------------------+----------+
#|06-06-2019,17:15:46     |2019-06-06|
#|2020-01-01T06:07:22.000Z|2020-01-01|
#+------------------------+----------+

您好,我是python新手,您能否以非python的方式编写coalesce(*[to_timestamp(col,I)for I in frmts]??
from pyspark.sql.functions import coalesce, col, to_date

def dynamic_date(col, frmts=("MM-dd-yyyy", "yyyy-MM-dd")):
    return coalesce(*[to_date(col, i) for i in frmts])

df.show(10,False)
#+------------------------+
#|timestamp               |
#+------------------------+
#|06-06-2019,17:15:46     |
#|2020-01-01T06:07:22.000Z|
#+------------------------+

df.withColumn("dd",dynamic_date(col("timestamp"))).show(10,False)
#+------------------------+----------+
#|timestamp               |dd        |
#+------------------------+----------+
#|06-06-2019,17:15:46     |2019-06-06|
#|2020-01-01T06:07:22.000Z|2020-01-01|
#+------------------------+----------+