pyspark动态过滤

use*_*er1 5 dynamic filter apache-spark pyspark

是否可以动态过滤数据帧?

例如,如果我有以下带有可变数量键值对的字典,如何动态过滤数据帧?

x = {
"date": "2018-10-01",
"color": "red"
}
Run Code Online (Sandbox Code Playgroud)

我可以做这个

df.filter(df["date"] == x["date"] & df["color"] == x["color"])
Run Code Online (Sandbox Code Playgroud)

但字典可以有可变数量的键值对,比如“形状”:“圆”,所以我必须添加到过滤器。或者,如果字典只有一个 kvp,它应该只过滤该一列。有没有办法根据字典动态构建过滤器?

谢谢

ern*_*t_k 7

由于您的逻辑运算符是AND,您可以简单地在循环中创建连续过滤的数据帧:

for col in x:
    df = df.filter(df[col] == x[col])
Run Code Online (Sandbox Code Playgroud)