Usar lit
converteria todos os valores da coluna para o valor fornecido.
Para fazer isso apenas para valores não nulos do quadro de dados, você teria que filtrar valores não nulos de cada coluna e substituir seu valor. when
pode ajudá-lo a conseguir isso.
from pyspark.sql.functions import when
df.withColumn('c1', when(df.c1.isNotNull(), 1))
.withColumn('c2', when(df.c2.isNotNull(), 1))
.withColumn('c3', when(df.c3.isNotNull(), 1))
Isso resultaria em:
1 123c11 11 1n u l lc21 1n u l l1 1c31 11 1n u l l
Além disso, se você desejar substituir esses valores nulos por algum outro valor também, poderá usar otherwise
em combinação com when
. Digamos que você queira imputar 0
lá:
from pyspark.sql.functions import when
df.withColumn('c1', when(df.c1.isNotNull(), 1).otherwise(0))
.withColumn('c2', when(df.c2.isNotNull(), 1).otherwise(0))
.withColumn('c3', when(df.c3.isNotNull(), 1).otherwise(0))
Isso resultaria em:
1 123c11 11 10 0c21 10 01 1c31 11 10 0