Я пытался заставить этот простой код работать, но пока безуспешно.
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; он все еще возвращается в конечном результате.