Как вернуть строки с нулевыми значениями в pyspark dataframe? - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь получить строки с нулевыми значениями из фрейма данных pyspark.В пандах я могу добиться этого, используя isnull() на фрейме данных:

df = df[df.isnull().any(axis=1)]

Но в случае PySpark, когда я запускаю команду, указанную ниже, она показывает Attributeerror:

df.filter(df.isNull())

AttributeError: Объект DataFrame не имеет атрибута isNull.

Как получить строки с нулевыми значениями, не проверяя их для каждого столбца?

1 Ответ

0 голосов
/ 11 декабря 2018

Вы можете отфильтровать строки с помощью where, reduce и понимания списка.Например, для следующего кадра данных:

df = sc.parallelize([
    (0.4, 0.3),
    (None, 0.11),
    (9.7, None), 
    (None, None)
]).toDF(["A", "B"])

df.show()
+----+----+
|   A|   B|
+----+----+
| 0.4| 0.3|
|null|0.11|
| 9.7|null|
|null|null|
+----+----+

Фильтрация строк с некоторым значением null может быть достигнута с помощью:

import pyspark.sql.functions as f
from functools import reduce

df.where(reduce(lambda x, y: x | y, (f.col(x).isNull() for x in df.columns))).show()

, что дает:

+----+----+
|   A|   B|
+----+----+
|null|0.11|
| 9.7|null|
|null|null|
+----+----+

В условии вы должны указать, есть ли (или, |), все (и, &) и т. Д.

...