Pyspark: множественный фильтр на строковом столбце - PullRequest
0 голосов
/ 11 июля 2019

Предположим, что в приведенной ниже таблице указан фрейм данных pyspark, и я хочу применить фильтр к столбцу ind для нескольких значений. Как это сделать в pyspark?

ind group people value 
John  1    5    100   
Ram   1    2    2       
John  1    10   80    
Tom   2    20   40    
Tom   1    7    10    
Anil  2    23   30    

Я пытаюсь следовать, но безуспешно

filter = ['John', 'Ram']
filtered_df = df.filter("ind == filter ")
filtered_df.show()

Как этого добиться в искре?

1 Ответ

1 голос
/ 11 июля 2019

Вы можете использовать:

filter = ['John', 'Ram']
filtered_df = df.filter("ind in ('John', 'Ram') ")
filtered_df.show()

или

filter = ['John', 'Ram']
processed_for_pyspark = ', '.join(['\'' + s + '\'' for s in filter])
filtered_df = df.filter("ind in ({}) ".format(processed_for_puspark))
filtered_df.show()

, если вы хотите, чтобы ваши фильтры были в списке. Также обратите внимание, что мы используем одинарное равное = вместо двойного равного == для проверки равенства в pyspark (как в SQL)

...