В pyspark, используя функцию withColumn, я хотел бы добавить к фрейму данных фиксированный столбец плюс переменное количество столбцов, в зависимости от размера списка.Я попытался сделать это, создав цикл перед функцией withColumn.Это решение не дает ожидаемого результата, так как только последний столбец в цикле добавляется к кадру данных (сделан постоянным).Я понимаю, что добавление цикла до того, как функция Window выдаст ожидаемые результаты, однако выполнение функции Window многократно убило бы мой процесс - с точки зрения производительности - поскольку мой набор данных содержит миллионы записей, а список содержит большое количество элементов.
...
products = ['a','b','c']
w1 = Window.orderBy("ID").partitionBy("ID")
data = data.withColumn(
"ID_changed_column",
(f.col("ID") != f.lead("ID").over(w1)).cast("int")
)
for product in products:
data = data.withColumn(
product,
("boo")
)
...
В этом примере мне нужно добавить к фрейму данных «данные» 4 столбца: «ID_changed_column», «a», «b» и «c».С помощью приведенного выше кода я получаю только столбец 'c' (последний в цикле).Есть ли решение, использующее функцию Window только один раз?