У меня есть фрейм данных pyspark с фиктивными значениями, такими как:
user domain1 domain2 domain3.......... conversions
abcd 1 0 0 1
gcxe 0 1 2 0
. . . . .
. . . . .
. . . . .
. . . . .
Что я хочу сделать, это создать столбец vw_format с каждой строкой vw_format, содержащей строку, содержащую столбецимена, которые не 0 в этой строке.Итак, я хочу столбец, например, так:
'vw_format'
'1|d domain1'
'0|d domain1 domain3'
.
.
.
Как мне это сделать?Я не могу использовать collect (), потому что у меня большой набор данных.
«1 |»и "0 |"просто представьте столбец конверсий, который я уже реализовал.
Я пытался сделать это таким образом, но это не сработало:
df = df.withColumn("conversions",F.when(col('conversions') == 1, '1 10 | ').otherwise("-1 | "))
line = []
def myfunc(x):
line = ""+x+""
return line
df = df.withColumn('vw_format', sf.concat(sf.col('conversions'),sf.lit('d '), sf.lit(when(sf.col([i for i in list])!=1,myfunc(i)))))
Я сделал это в python перед использованием iterrows () но я не могу в pyspark.Примечание: - Это большой набор данных.