我必须根据用户输入的某些条件从数据框中过滤行。我读取了一个csv文件,以字符串的形式获取每个条件。然后,使用下面的代码进行过滤。
dataframe.filter(expr(condition))
这适用于不包含“&”,“ |”的简单条件。例如:“ col1!= 0”,“ col2> 2”。
现在的要求是使其也能在复杂条件下工作。
以下是一个示例
数据框
col1 | col2 | col3 | col4
-----+------+------+------
1.0 | 10 | 100 | x
0.2 | 20 | 200 | y
1.3 | 30 | 300 | x
复杂条件:“(col1 <1.0)&(col2 + col3)> = 200)&(col4!='x')”
有办法吗?
答案 0 :(得分:1)
您可以将&
和|
转换为and
和or
。如果复杂的条件被深层嵌套,则可以递归进行。
以下是Spark SQL函数的列表供您参考:
https://docs.databricks.com/spark/latest/spark-sql/language-manual/functions.html