如何验证 Pyspark 中列的日期格式?

How to validate the date format of a column in Pyspark?

我是 Pyspark 的新手,我想检查该列的日期格式是否正确?我该怎么做?虽然我收到错误,但我已经尝试过。谁能帮我解决这个问题?

我的代码:

df = 
   Date        name
0  12/12/2020   a
1  24/01/2019   b
2  08/09/2018   c
3  12/24/2020   d
4  Nan          e
df_out= df.withColumn('output', F.when(F.to_date("Date","dd/mm/yyyy").isNotNull, Y).otherwise(No))
df_out.show()

给我:

TypeError: condition should be a Column

转换为日期类型后可以filter出行

Example:

df.show()
#+----------+----+
#|      Date|name|
#+----------+----+
#|12/12/2020|   a|
#|24/01/2019|   b|
#|12/24/2020|   d|
#|       nan|   e|
#+----------+----+

from pyspark.sql.functions import *

df.withColumn("output",to_date(col('Date'),'dd/MM/yyyy')).\
filter(col("output").isNotNull()).\
show()
#+----------+----+----------+
#|      Date|name|    output|
#+----------+----+----------+
#|12/12/2020|   a|2020-12-12|
#|24/01/2019|   b|2019-01-24|
#+----------+----+----------+

#without adding new column
df.filter(to_date(col('Date'),'dd/MM/yyyy').isNotNull()).show()
#+----------+----+
#|      Date|name|
#+----------+----+
#|12/12/2020|   a|
#|24/01/2019|   b|
#+----------+----+