计算 Python 函数中的每个字段

Evaluate each field in Python function

我正在尝试评估下面 if 语句中的每个字段。

然而,我运行陷入了以下错误:Method col([class java.util.ArrayList])不存在.

我想要实现的目标:我试图在 Python 函数中评估我的数据框中的两个字段 - 姓名和姓氏。在这些字段中,我有 NULL 值。对于每个字段,我想确定是否存在 NULL 值。

我正在加载各种数据集,其中包含应从每个集合中评估的字段。我想将这些字段传递给函数以检查是否存在 NULL 值。

def identifyNull(Field):

Field = ['Name', 'Surname'] - this is an example of what I would like to pass to my function. 

for x in Field:
  if df.select().filter(col(Field).isNull()).count() > 0:
    print(Field)
  else:
    print('False')

df = 我正在读取的数据的数据框名称。

df结构:

Name Surname
John Doe
NULL James
Lisa NULL

请注意:我是 Python 和 Spark 的新手。

您正在调用 col(Field) 字段是一个列表。由于您正在遍历字段,请尝试使用 col(x)

所以它会是这样的:

for x in Field:
    if df.where(F.col('Name').isNull()).count() > 0:
        print(x)
    else:
        print('False')

假设

data = [["John", "Doe"], 
        [None, "James"],
        ["Lisa", None]]
Field = ["Name", "Surname"]
df = spark.createDataFrame(data, Field)
df.show()

returns:

+----+-------+
|Name|Surname|
+----+-------+
|John|    Doe|
|null|  James|
|Lisa|   null|
+----+-------+

然后

for x in Field:
    if df.select(x).where(x+" is null").count()>0:
        print(x)
    else:
        print(False)

returns:

Name
Surname