我有一个过滤pyspark数据帧的要求,用户将直接将过滤列部分作为字符串参数传递。例如:
Sample Input data: df_input
|dim1|dim2| byvar|value1|value2|
| 101| 201|MTD0001| 1| 10|
| 201| 202|MTD0002| 2| 12|
| 301| 302|MTD0003| 3| 13|
| 401| 402|MTD0004| 5| 19|
例1:过滤器
I will filter the data as: df_input = df_input.filter(filter_str)
Output: (**I'm able to get the output**)
|dim1|dim2| byvar|value1|value2|
| 101| 201|MTD0001| 1| 10|
但是,对于多重过滤条件,我得到了错误,无法过滤。 无法过滤输入数据帧的场景:
有效的Scr 1:
filter_str = "dim1 = '101' and dim2 in '['302', '402']'"
df_inp = df_inp.filter(filter_str)
Getting Error
有效的Scr 2:
value_list = ['302', '402']
filter_str = "dim1 = '101' or dim2 in '(value_list)'"
df_inp = df_inp.filter(filter_str)
Getting Error
如果我得到了示例中提到的filter_str字符串,请您帮助我获取scr 1和scr 2,以及如何修改filter部分
在过滤器查询中使用括住每条语句
&
(或|
运算符,并用括号^{Using expr:
在这里,我们需要将列表转换为
tuple
以对value_list
执行in
相关问题 更多 >
编程相关推荐