传递列表中的列名



我有一个列名列表,每次都会变化。列名存储在列表中。因此,我需要将列表中的列名(在下面的示例中是 id 和 programid(传递给 when 子句,并检查两列是否都包含 null 值。请帮助我解决问题。

Pyspark Code:

ColumnList = ['id','programid']
joinSrcTgt.withColumn(
    'action', 
    when(joinSrcTgt.id.isNull() & joinSrcTgt.prgmid.isNull(),'insert')
)

您可以使用列表推导来检查每列是否为 null:

[col(c).isNull() for c in ColumnList]

然后,您可以使用functools.reduce按位和(&(将这些放在一起:

from functools import reduce
from pyspark.sql.functions import col, when
ColumnList = ['id','programid']
joinSrcTgt.withColumn(
    'action', 
    when(
        reduce(lambda a, b: a&b, [col(c).isNull() for c in ColumnList]),
        'insert'
    )
)

相关内容

  • 没有找到相关文章

最新更新