在pyspark.withcolumn中编写自定义条件

fkaflof6  于 2021-05-17  发布在  Spark
关注(0)|答案(1)|浏览(397)

我必须添加一个自定义条件,它在.withcolumn中有许多列。我的设想是这样的。我必须逐行检查许多列是否有空值,并将这些列名添加到新列中。我的代码看起来像这样:

df= df.withColumn("MissingColumns",\
    array(\
    when(col("firstName").isNull(),lit("firstName")),\
    when(col("salary").isNull(),lit("salary"))))

问题是我有许多列,我必须添加到条件中。所以我试着用循环和f字符串来定制它,并试着用它。

df = df.withColumn("MissingColumns",condition)

但这种情况不起作用。可能是因为,我写的条件是数据类型string。有什么有效的方法吗?

sulc1iza

sulc1iza1#

您需要在数组中解压列表,如下所示:

columns = ["firstName","salary"]
condition = array(*[when(col(c).isNull(),lit(c)) for c in columns])

相关问题