Как проверить формат даты столбца в Pyspark?

#dataframe #pyspark #date-format

#фрейм данных #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
 

Комментарии:

1. .isNotNull() , со скобками

2. @mck Я смог написать это для проверки формата даты, но я хочу избежать нулевых строк в нем, как мне это сделать? df.withColumn(«Output», F.when(F.to_date(F.col(«Дата»),»дд / ММ / гггг»). IsNotNull(), False). в противном случае (Верно))

Ответ №1:

Вы можете 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|
# ---------- ----