Menggunakan lit
akan mengonversi semua nilai kolom ke nilai yang diberikan.
Untuk melakukannya hanya untuk nilai-nilai dataframe yang bukan nol, Anda harus memfilter nilai-nilai yang bukan nol dari setiap kolom dan mengganti nilai Anda. when
dapat membantu Anda mencapai ini.
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))
Ini akan menghasilkan:
123c111n u l lc21n u l l1c311n u l l
Juga, jika Anda ingin mengganti nilai-nilai nol itu dengan beberapa nilai lain juga, Anda dapat menggunakan otherwise
dalam kombinasi dengan when
. Katakanlah Anda ingin menyalahkan di 0
sana:
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))
Ini akan menghasilkan:
123c1110c2101c3110