PySpark - невозможно отфильтровать строки по значениям другого столбца - PullRequest
0 голосов
/ 27 февраля 2020

Я пытался заставить этот простой код работать, но пока безуспешно.

df = sqlContext.createDataFrame([
    ('www.example.com/researc', 'Research Reports'),
    ('www.example.com/careers', 'Careers'),
    ('www.example.com/blogs', 'blogs'),
    ('www.example.com', None),
    ('www.example.com/navigation', None),
    ('www.example.com', 'main'),
    ('www.example.jp', None),
    ('', 'blogs')], ['A', 'B'])

display(df.toPandas())
df.printSchema()
print('Original DF')
display(df.toPandas())

filter_mask = df.where(df['B'].isNotNull())
print("\n\nFilter Mask")
display(filter_mask.toPandas())

print('\n\nfilter_mask[A]')
filter_mask.select('A').show()

# Why is "response" returning everything?!
response = df.filter(df['A'].isin(filter_mask['A']))
print("\n\nResulting DF")
display(response.toPandas())

Я пытаюсь отфильтровать все нулевые значения из 'B', а затем только сохранить все соответствующие значения в А; однако мой лог c продолжает возвращать весь фрейм данных. Может кто-нибудь помочь мне понять, почему я не фильтрую значения правильно?

Обновление

Так что мой желаемый результат будет:

+--------------------+----------------+
|                   A|               B|
+--------------------+----------------+
|www.example.com/r...|Research Reports|
|www.example.com/c...|         Careers|
|www.example.com/b...|           blogs|
|     www.example.com|            null|
|     www.example.com|            main|
|                    |           blogs|
+--------------------+----------------+

^ По сути, я хочу сохранить все URL-адреса, сопоставленные с любым ненулевым значением в B. null; он все еще возвращается в конечном результате.

1 Ответ

0 голосов
/ 27 февраля 2020
df.filter(df.B.isNotNull()).show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...