Використання lit
перетворить усі значення стовпця на задане значення.
Щоб зробити це лише для ненульових значень фрейму даних, вам доведеться фільтрувати ненульові значення кожного стовпця і замінювати своє значення. 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))
Це призведе до:
123c111nullc21null1c311null
Крім того, якщо ви хочете замінити ці нульові значення на якесь інше значення, ви можете використовувати 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