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