L'utilizzo lit
convertirà tutti i valori della colonna nel valore dato.
Per farlo solo per valori non nulli di dataframe, dovresti filtrare i valori non nulli di ogni colonna e sostituire il tuo valore. when
può aiutarti a raggiungere questo obiettivo.
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))
Ciò comporterebbe:
123c111n u l lc21n u l l1c311n u l l
Inoltre, se si desidera sostituire quei valori null anche con qualche altro valore, è possibile utilizzare otherwise
in combinazione con when
. Diciamo che vuoi imputare 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))
Ciò comporterebbe:
123c1110c2101c3110