Предположим, у вас есть фрейм данных pyspark df
со столбцами A
и B
.
Теперь вы хотите отфильтровать фрейм данных со многими условиями.
Условия содержатся в списке of dicts:
l = [{'A': 'val1', 'B': 5}, {'A': 'val4', 'B': 2}, ...]
Фильтрация должна выполняться следующим образом:
df.filter(
( (df['A'] == l[0]['A']) & (df['B'] == l[0]['B']) )
&
( (df['A'] == l[1]['A']) & (df['B'] == l[1]['B']) )
&
...
)
Как это можно сделать с l
, содержащим много условий, то есть ручная вставка в условие фильтра не практично?
Я думал об использовании отдельных шагов фильтра, например:
for d in l:
df = df.filter((df['A'] == d['A']) & (df['B'] == d['B']))
Есть ли более короткий или более элегантный способ сделать это, например, аналогично использованию списочных представлений?
Кроме того, это не работает для OR (|).