如何将参数传递给不接受字符串的函数(Pyspark)



我有Spark SQL中的连接函数。这个函数需要一个连接条件,如果要连接的列不具有相同的名称,则需要将它们作为连接表达式传递。

的例子:

x.join(y, x.column1 == y.column2)

这意味着我们在x中的column1y中的column2上连接xy数据框

我想写一个函数,它将两个数据框架的列名作为参数,并在这些列上进行连接。问题是连接表达式不能是字符串。我看过这样的问题,其中一个地图是用来映射一个变量名,但这并不适合我的需要。我需要删除使列名成为字符串的引号,并将它们传递给join函数。

我已经检查过了,如果我们要加入的列没有相同的名称(除了生成一个具有新列名的数据框架的副本之外),在Pyspark中没有其他方法可以做到这一点。这是因为数据框架是不可变的,列名不能更改)

是否有其他方法将列名传递到连接表达式中?

重新发布我的评论作为将来参考的答案。您可以使用gettatr函数获取类或模块的任何属性。

x.join(y, getattr(x, 'column1') == getattr(y, 'column2'))

相关内容

  • 没有找到相关文章

最新更新