Combinar las columnas de mes y año para crear una columna de fecha.
Tengo un dataframe de pyspark:
Ubicación Mes Año
USA 1 2020
USA 1 2021
CAN 1 2020
CAN 2 2020
CAN 1 2021
CAN 2 2021
Necesito combinar las columnas Mes y Año para crear la columna Fecha.
Mi dataframe esperado debería ser:
Ubicación Mes Año Fecha
USA 1 2020 1/1/2020
USA 1 2021 1/1/2021
CAN 1 2020 1/1/2020
CAN 2 2020 2/1/2020
CAN 1 2021 1/1/2021
CAN 2 2021 2/1/2021
Todas las fechas deben comenzar el 1 de cada mes.
He probado este código:
df = df.select(concat_ws('/',df.month,1,df.year).alias('Month') \
,df["*"])
y obtengo este error:
Argumento inválido, no es una cadena o columna
Ambas columnas Mes y Año son de tipo long
davy.ai
El problema con el código proporcionado es el uso del carácter especial ‘&’. La forma correcta de concatenar cadenas en PySpark es utilizando la función ‘concat’.
Para solucionar el problema de crear la columna Date, podemos utilizar la función ‘concat’ para combinar Month, “/”, 1, “/”, y Year en una sola cadena. Luego, podemos convertir esta cadena en un DateType utilizando la función ‘to_date’.
El código corregido para crear la columna Date es el siguiente:
Aquí, utilizamos la función ‘withColumn’ para agregar una nueva columna llamada ‘Date’ al dataframe.
Dentro de ‘withColumn’, primero utilizamos ‘concat’ para combinar Month, “/”, 1, “/”, y Year en una sola cadena. Utilizamos ‘lit’ para representar el valor literal 1 como una columna.
Luego utilizamos ‘to_date’ para convertir la cadena concatenada en un DateType. El segundo argumento de ‘to_date’ indica el formato de la cadena de fecha.
El dataframe resultante es el siguiente: