L'utilisation litconvertirait toutes les valeurs de la colonne en la valeur donnée.
Pour le faire uniquement pour les valeurs non nulles de la trame de données, vous devez filtrer les valeurs non nulles de chaque colonne et remplacer votre valeur. whenpeut vous aider à y parvenir.
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))
Il en résulterait:
123c111n u l lc21n u l l1c311n u l l
En outre, si vous souhaitez également remplacer ces valeurs nulles par une autre valeur, vous pouvez les utiliser otherwiseen combinaison avec when. Disons que vous voulez imputer 0là-bas:
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))
Il en résulterait:
123c1110c2101c3110