在数据框的 selectExpr 中使用包含表达式的字符串变量
Use string variable containing expression in selectExpr of dataframe
我在尝试在数据帧的 selectExpr
中使用包含我的表达式的变量时遇到问题。
所以我的变量是:
expression = '"substr(value,1,1) as qffffffffbf3ef0cf","substr(value,2,1) as q6a0aaf20"'
并尝试在数据帧上使用它作为:
ascii_df.selectExpr(expression).show(1)
但是我一直收到不匹配的输入错误。如果我直接将表达式放入如下它有效:
ascii_df.selectExpr("substr(value,1,1) as qffffffffbf3ef0cf","substr(value,2,1) as q6a0aaf20").show(1)
在 PySpark 中有没有办法做到这一点?
您实际上使用了两个不同的表达式。在 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)
我在尝试在数据帧的 selectExpr
中使用包含我的表达式的变量时遇到问题。
所以我的变量是:
expression = '"substr(value,1,1) as qffffffffbf3ef0cf","substr(value,2,1) as q6a0aaf20"'
并尝试在数据帧上使用它作为:
ascii_df.selectExpr(expression).show(1)
但是我一直收到不匹配的输入错误。如果我直接将表达式放入如下它有效:
ascii_df.selectExpr("substr(value,1,1) as qffffffffbf3ef0cf","substr(value,2,1) as q6a0aaf20").show(1)
在 PySpark 中有没有办法做到这一点?
您实际上使用了两个不同的表达式。在 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)