Użycie lit
spowoduje przekonwertowanie wszystkich wartości kolumny na podaną wartość.
Aby to zrobić tylko dla niepustych wartości ramki danych, należy przefiltrować niepuste wartości każdej kolumny i zastąpić swoją wartość. when
może pomóc Ci to osiągnąć.
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))
Spowodowałoby to:
123c111nullc21null1c311null
Ponadto, jeśli chcesz zastąpić te wartości null innymi wartościami, możesz użyć ich otherwise
w połączeniu z when
. Powiedzmy, że chcesz 0
tam przypisać :
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))
Spowodowałoby to:
123c1110c2101c3110