Python 如何将存储在变量中的条件解析为PySpark代码?
我有一个数据帧Python 如何将存储在变量中的条件解析为PySpark代码?,python,python-3.x,apache-spark,pyspark,apache-spark-sql,Python,Python 3.x,Apache Spark,Pyspark,Apache Spark Sql,我有一个数据帧df和一个字符串变量cond,其中包含一个条件,比如: cond = """F.col('some-column').isin(['some-value'])""" 我需要应用/解析这个条件,它作为文本存储在数据帧df上。我怎样才能做到这一点 我知道如果我稍微修改一下,我可以利用SparkSQL。然而,对于一些即将到来的需求,我更喜欢这种方法。如果可能的话,也就是说。IIUC,直接在数据帧上使用过滤器。 a_list =
df
和一个字符串变量cond
,其中包含一个条件,比如:
cond = """F.col('some-column').isin(['some-value'])"""
我需要应用/解析这个条件,它作为文本存储在数据帧df
上。我怎样才能做到这一点
我知道如果我稍微修改一下,我可以利用SparkSQL。然而,对于一些即将到来的需求,我更喜欢这种方法。如果可能的话,也就是说。IIUC,直接在数据帧上使用过滤器。
a_list = [1, 2 3]
df = df.filter(F.col("col_name).isin([a_list]))
根据理解更新答案:)
多亏了他的投入,这比我想象的要容易
cond = """F.col('some-column').isin(['some-value'])"""
df = df.filter(eval(cond))
这我知道。问题是,我得到的条件是变量中的字符串。我必须将其应用于数据帧。比如说,df.filter(magic_func(cond))更新了答案-你能检查一下吗?如果您希望获得相同的批准和投票,我们将不胜感激。。提前谢谢!你试过了吗?谢谢!成功了!使用评估方法通常意味着糟糕的设计。正确的方法是DSK回答。是的。将case语句与expr一起使用也是此类用例的一个很好的解决方法
cond = """F.col('some-column').isin(['some-value'])"""
df = df.filter(eval(cond))