Решение, которое я имею в виду, состоит в том, чтобы объединить два набора данных с разными суффиксами и затем применить case_when
. Решение не проверено.
Сначала выполните полное соединение: (в вашем примере достаточно левого соединения)
import pyspark.sql.functions as psf
df_join = (df1
.join(df2, psf.col('col_1') == psf.col('col_4'), how = "full_outer")
.drop("col_4")
)
Я предположил, что вы хотели full join
. Вы можете изменить при необходимости.
Затем вы используете условную замену на psf.when
df_join = df_join
.withColumn("col_2",
psf.when(psf.col('col_2').isNull(),
psf.col('col_5'))
)
)
.withColumn("col_3",
psf.when(psf.col('col_2').isNull(),
psf.col('col_6'))
)
)