在数据框的selectExpr中使用包含表达式的字符串变量

时间:2018-09-06 03:20:48

标签: python apache-spark pyspark apache-spark-sql pyspark-sql

尝试在数据框的import pandas as pd list = [['oranges', 'apples']] df= pd.DataFrame() df['A'] = list 中使用包含表达式的变量时遇到问题。

所以我的变量为:

selectExpr

并尝试以以下方式在数据框上使用它:

expression = '"substr(value,1,1) as qffffffffbf3ef0cf","substr(value,2,1) as q6a0aaf20"'

但是,我一直遇到不匹配的输入错误。如果我按如下所示直接放入表达式,它将起作用:

ascii_df.selectExpr(expression).show(1)

在PySpark中有这样做的方法吗?

1 个答案:

答案 0 :(得分:2)

实际上,您正在使用两个单独的表达式。在selectExpr中直接使用它们时,您会将表达式用作selectExpr的两个独立参数:

selectExpr("substr(value,1,1) as qffffffffbf3ef0cf","substr(value,2,1) as q6a0aaf20")

但是expression是一个字符串,这就是为什么它不起作用的原因。而是将其更改为:

expressions = ["substr(value,1,1) as qffffffffbf3ef0cf","substr(value,2,1) as q6a0aaf20"]
ascii_df.selectExpr(expressions).show(1)