Передать имена столбцов из списка - PullRequest
2 голосов
/ 12 апреля 2019

У меня есть список имен столбцов, который меняется каждый раз. Имена столбцов хранятся в списке. Итак, мне нужно передать имена столбцов из списка (в приведенном ниже примере его id и programid) в предложение when и проверить, содержат ли оба столбца нулевые значения. Пожалуйста, помогите мне с решением.

Код Pyspark:

ColumnList = ['id','programid']

joinSrcTgt.withColumn(
    'action', 
    when(joinSrcTgt.id.isNull() & joinSrcTgt.prgmid.isNull(),'insert')
)

1 Ответ

1 голос
/ 12 апреля 2019

Вы можете использовать понимание списка, чтобы проверить, является ли каждый столбец нулевым:

[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'
    )
)
...