我有一个以字符串为元素的列表。
list_elem = ['df1.x1 == df2.p1', 'df1.x2 == df2.p2']
我想将该列表更改为类似的内容。
list_new = [ df1.x1 == df2.p1, df1.x2 == df2.p2 ]
我需要这个,因为我必须使用以列表形式给出的参数输入来运行联接。
df = df1.join(df2,list_new,"inner")
答案 0 :(得分:0)
IIUC,您可以使用pyspark.sql.functions.expr
获得所需的结果:
from pyspark.sql.functions import expr
df = df1.alias('df1').join(
df2.alias('df2'),
on=expr(" AND ".join(list_elem )),
how="inner"
)
第" AND ".join(list_elem )
行将列表中的元素与之间的单词"AND"
连接起来。
print(" AND ".join(list_elem ))
#df1.x1 == df2.p1 AND df1.x2 == df2.p2