在 Pyspark 的 .withColumn 中编写自定义条件
Writing custom condition inside .withColumn in Pyspark
我必须添加一个自定义条件,它在.withColumn 中有很多列。
我的场景有点像这样。如果它们具有 Null 值,我必须逐行检查许多列,并将这些列名添加到新列中。我的代码看起来有点像这样:
df= df.withColumn("MissingColumns",\
array(\
when(col("firstName").isNull(),lit("firstName")),\
when(col("salary").isNull(),lit("salary"))))
问题是我有很多列必须添加到条件中。所以我尝试使用循环和 f 字符串对其进行自定义并尝试使用它。
df = df.withColumn("MissingColumns",condition)
但是这个条件不行。可能是因为,我写的条件是数据类型String。
有什么有效的方法吗?
您需要将列表解压到数组中,如下所示:
columns = ["firstName","salary"]
condition = array(*[when(col(c).isNull(),lit(c)) for c in columns])
我必须添加一个自定义条件,它在.withColumn 中有很多列。 我的场景有点像这样。如果它们具有 Null 值,我必须逐行检查许多列,并将这些列名添加到新列中。我的代码看起来有点像这样:
df= df.withColumn("MissingColumns",\
array(\
when(col("firstName").isNull(),lit("firstName")),\
when(col("salary").isNull(),lit("salary"))))
问题是我有很多列必须添加到条件中。所以我尝试使用循环和 f 字符串对其进行自定义并尝试使用它。
df = df.withColumn("MissingColumns",condition)
但是这个条件不行。可能是因为,我写的条件是数据类型String。 有什么有效的方法吗?
您需要将列表解压到数组中,如下所示:
columns = ["firstName","salary"]
condition = array(*[when(col(c).isNull(),lit(c)) for c in columns])