การใช้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 ลิตรลิตรc21n U ลิตรลิตร1c311n U ลิตรลิตร
นอกจากนี้ถ้าคุณต้องการที่จะเปลี่ยนค่า null ผู้ที่มีค่าอื่น ๆ บางเกินไปคุณสามารถใช้ร่วมกับ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