Menggunakan litakan 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. whendapat 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 otherwisedalam kombinasi dengan when. Katakanlah Anda ingin menyalahkan di 0sana:
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