es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir el tipo “none” a datetime utilizando parser.parse

Estoy utilizando la siguiente función para convertir una cadena en fecha en PySpark:

func = udf(lambda x: parser.parse(x), DateType())

Mi formato de fecha es:

"22-Jan-2021 00:00"

Aunque esta función no funciona con tipos None, tengo el siguiente DataFrame Spark:

date
----
"22-Jan-2021 00:00"
""
"10-Feb-2020 14:00"

Cuando aplico mi func a la columna date, obtengo un error en la segunda línea del DataFrame diciendo que no puede analizar un tipo NoneType. ¿Algún consejo para resolver este problema utilizando PySpark y la función anterior func?

Un ejemplo mínimo, completo y verificable:

date = None
date_parsed = parser.parse(date)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para resolver el problema usando PySpark y la función dada, puedes agregar una condición para comprobar si el valor es None antes de aplicar la función. Esto se puede hacer utilizando la función when() en PySpark de la siguiente manera:

    from pyspark.sql.functions import when
    
    df = df.withColumn("date_parsed", when(df.date.isNull(), None).otherwise(func(df.date)))
    

    Este código agrega una nueva columna llamada date_parsed al DataFrame df. La función when() verifica si la columna date es null (es decir, None) y si es así, devuelve None para la columna date_parsed en esa fila. De lo contrario, aplica la función func a la columna date y retorna el valor analizado para date_parsed.

    El DataFrame resultante tendrá una nueva columna llamada date_parsed que contiene las fechas analizadas donde se hayan analizado correctamente, y None donde el valor original era None.

Comments are closed.