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)
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ónwhen()
en PySpark de la siguiente manera:Este código agrega una nueva columna llamada
date_parsed
al DataFramedf
. La funciónwhen()
verifica si la columnadate
esnull
(es decir,None
) y si es así, devuelveNone
para la columnadate_parsed
en esa fila. De lo contrario, aplica la funciónfunc
a la columnadate
y retorna el valor analizado paradate_parsed
.El DataFrame resultante tendrá una nueva columna llamada
date_parsed
que contiene las fechas analizadas donde se hayan analizado correctamente, yNone
donde el valor original eraNone
.