В настоящее время вы не можете использовать IN
таким образом с pyspark-sql 1 .Вместо этого вам придется присоединиться к DataFrames.
Попробуйте что-то вроде:
from pyspark.sql.functions import col, when
df3 = df2.withColumn("id", col("week_id")).alias("df2")\
.join(bears2.withColumn("id", col("week_if")).alias("bears2"), on="id", how="left")\
.select("df2.*", when(col("bears2.id").isNotNull(), 1).otherwise(0))
Чтобы объединение работало, столбец ключа объединения должен существовать в обоих DataFrames.По этой причине я сначала вызываю withColumn("id", ...)
, чтобы переименовать столбцы с тем же значением для объединения.
Затем мы выполняем левое соединение, чтобы сохранить все столбцы в df2
.Наконец, мы выбираем все столбцы в df2
и используем pyspark.sql.functions.when()
для создания логического столбца.
Первый аргумент when()
является условием.Если это True
, возвращается второй аргумент.Если нет, используется значение в otherwise()
.