Python 如何将参数传递给不带';t带弦(Pyspark)
我在Spark SQL中有连接函数。此函数需要一个联接条件,如果要联接的列没有相同的名称,则需要将它们作为联接表达式传递 例如:Python 如何将参数传递给不带';t带弦(Pyspark),python,join,argument-passing,apache-spark-sql,pyspark,Python,Join,Argument Passing,Apache Spark Sql,Pyspark,我在Spark SQL中有连接函数。此函数需要一个联接条件,如果要联接的列没有相同的名称,则需要将它们作为联接表达式传递 例如: x.join(y, x.column1 == y.column2) 这意味着我们将在x中的column1和y中加入数据帧x和y中的column2 我想编写一个函数,将两个数据帧的列名作为参数,并对这些列进行联接。问题是联接表达式不能是字符串。我看过这样的问题,其中映射用于映射变量名,但这不符合我的需要。我需要删除使列名成为字符串的引号,并将它们传递给join函数 x
x.join(y, x.column1 == y.column2)
这意味着我们将在x
中的column1
和y
中加入数据帧x
和y
中的column2
我想编写一个函数,将两个数据帧的列名作为参数,并对这些列进行联接。问题是联接表达式不能是字符串。我看过这样的问题,其中映射用于映射变量名,但这不符合我的需要。我需要删除使列名成为字符串的引号,并将它们传递给join
函数
x.join(y, getattr(x, 'column1') == getattr(y, 'column2'))
我已经检查过了,如果我们要加入的列没有相同的名称,那么在Pyspark中没有其他方法可以做到这一点(除了生成一个具有新列名的数据帧副本。这是因为数据帧是不可变的,并且列名不能更改)
是否有其他方法将列名传递到联接表达式中?重新发布我的评论作为答案,以供将来参考。您可以使用
getatr
函数获取类或模块的任何属性
x.join(y, getattr(x, 'column1') == getattr(y, 'column2'))
重新发布我的评论,作为将来参考的答案。您可以使用
getatr
函数获取类或模块的任何属性
x.join(y, getattr(x, 'column1') == getattr(y, 'column2'))
你能试试
x.join(y,getattr(x,'column1')==getattr(y,'column2'))
?我的猜测是,这也是类型
@hgwells它也是一个列类型:\n很抱歉,你怀疑它是否起作用了吗?你能试试x.join(y,getattr(x,'column1')==getattr(y,'column2'))
?@hgwells当我这样做时,我得到了实际的列:type(getattr(x,'column1'))
如果您按照示例中的方式操作,那么x.column1的类型是什么?我的猜测是,这也是一种
@hgwells类型,它也是一种列类型:\n很抱歉,我怀疑你认为它起作用了吗?