有没有一种简单的方法通过在pyspark语法中不重复相同的列来执行多重连接?
例如,我想尝试类似这样的操作(代码如下):Input df2
| 识别码|州/省|dt_运行|
| - -|- -|- -|
| 一个|法国|2022年2月11日|
| 2个|英格兰|2022年2月11日|
| 三个|瑞士Name| 2022年2月11日|Input df2
个
| 识别码|国家/地区|首都_城市|
| - -|- -|- -|
| 一个|法国|巴黎|
| 2个|英格兰|伦敦|
〉df_output = df1.join(df2, ['ID', df1.State==df2.Country], 'left')
****〈-所需
这不起作用。是语法错误还是当列名相同时我也被迫重复“==”条件?
我不想这么做
> condition = [df1.ID==df2.ID, df1.State==df2.Country]
> df_output = df1.join(df2, condition, 'left')
这只是一个例子。这最后的代码给出了一个错误,因为它创建了2个同名(ID)的列。我可以只带一个吗?我想避免先重命名它们,我有很多数据集。
1条答案
按热度按时间rseugnpd1#
如果您希望通过比较联接两端的相同列(使用完全相同的名称)来进行联接,则使用的语法是联接的缩写形式。另请注意,您使用的语法将删除重复的列,而在下一个建议的方法中不会发生这种情况。
据我所知,上面的情况不是你的情况。在你的情况下,你可能应该使用标准语法来连接条件。下面的代码应该可以工作:
更多信息可在here中找到。