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

Dataframe 如何在Pyspark中验证列的日期格式?,dataframe,pyspark,date-format,Dataframe,Pyspark,Date Format,我是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",&qu

我是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

转换为日期类型后,您可以过滤出行

示例:

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|
#+----------+----+

.isNotNull()
,带有parenthesis@mck我可以写这个来验证日期格式,但是我想避免其中的空行。我该怎么做?df.withColumn(“Output”,F.when(F.to_date(F.col(“date”),“dd/MM/yyyy”)。isNotNull(),False)。否则(True))