Pyspark: emparejar columnas de dos dataframes diferentes y añadir valor.
Estoy intentando comparar los valores de dos columnas que existen en diferentes dataframes para crear un nuevo dataframe basado en la coincidencia de los criterios:
df1=
id |
---|
1 |
2 |
3 |
4 |
5 |
df2 =
id |
---|
2 |
5 |
1 |
Entonces, quiero agregar una ‘x’ en el campo ‘is_used’ cuando el campo de df2 existe en el campo de df1, de lo contrario agregar ‘NA’, para generar un dataframe de resultado como este:
df3 =
id | is_used |
---|---|
1 | X |
2 | X |
3 | NA |
4 | NA |
5 | X |
He intentado hacerlo de esta manera, pero los criterios de selección colocan una “X” en todas las columnas:
df3 = df3.withColumn(‘is_used’, F.when(
condition = (F.arrays_overlap(F.array(df1.id), F.array(df2.id))) == False,
value = ‘NA’
).otherwise(‘X’))
Agradecería cualquier ayuda.
davy.ai
Parece que estás tratando de comparar los valores de dos columnas que existen en diferentes dataframes para crear un nuevo dataframe basado en la coincidencia de los criterios. Puedes lograr esto usando la función
F.arrays_overlap
. Esta función devolveráTrue
si los dos arrays se superponen yFalse
si no. Luego puedes usar la funciónF.when
para agregar unaX
en el campois_used
cuando el campo dedf2
existe en el campo dedf1
, de lo contrario agregarNA
.Por ejemplo:
Esto debería darte el resultado deseado de: