Я пытаюсь оценить каждое поле в операторе if ниже.
Однако я сталкиваюсь со следующей ошибкой: Метод 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 = имя фрейма данных для данных, которые я читаю.
структура дф:
Имя | Фамилия |
---|---|
Джон | Доу |
НУЛЕВОЙ | Джеймс |
Лиза | НУЛЕВОЙ |
Обратите внимание: я совершенно не знаком с Python и Spark.
@Stefan df = имя фрейма данных для данных, которые я читаю. Надеюсь, это имеет смысл.
Вы имели в виду if df.select().filter(col( x).isNull()).count() > 0:
, а затем print(x)
? (Иначе какой смысл вносить ваш список Field
?
@JNevil Я хотел бы передать два поля в функцию. Я загружаю различные наборы данных с полями, которые должны оцениваться из каждого набора. Я хотел бы передать эти поля в функцию, чтобы проверить, существуют ли значения NULL.
Верно. Вы хотите передать каждое поле по одному в функцию, но вы передаете список в функцию. x
это ваше поле. Ваш цикл for
говорит «Возьмите каждый элемент в этом списке под названием fields
и назовите этот элемент x
». Многие языки программирования используют синтаксис For Each x in fields
, который немного понятнее. Python просто отбрасывает Each
, поэтому это не так многословно.
Вы звоните 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()
возвращает:
+----+-------+
|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)
возвращает:
Name
Surname
Что такое дф?