Использование lit
будет преобразовывать все значения столбца в заданное значение.
Чтобы сделать это только для ненулевых значений dataframe, вам нужно будет отфильтровать ненулевые значения каждого столбца и заменить свое значение. when
может помочь вам достичь этого.
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))
Это приведет к:
123c111n u l lc21n u l l1c311n u l l
Также, если вы хотите заменить эти нулевые значения другими значениями, вы можете использовать их otherwise
вместе с when
. Допустим, вы хотите вменять 0
там:
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))
Это приведет к:
123c1110c2101c3110