L'utilisation lit
convertirait 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. when
peut 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 otherwise
en combinaison avec when
. Disons que vous voulez imputer 0
là-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