【发布时间】:2020-05-20 22:46:04
【问题描述】:
我需要过滤 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:filter_str = "dim2 = '201'"
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 和 2 以及如何修改过滤器部分。
【问题讨论】:
-
有什么理由在字符串中写条件而不是写实际条件?
-
我得到的部分要求是用户将过滤条件作为参数(字符串类型)与过滤列和值一起传递。
标签: python dataframe pyspark pyspark-dataframes