在pyspark中对多个键执行联接,仅复制不相同的列名

时间:2019-02-02 02:36:37

标签: python pyspark

我想用Spark外连接两个数据框:

df1 columns: first_name, last, address 
df2 columns: first_name, last_name, phone_number

我的钥匙是first_name and df1.last==df2.last_name

我希望最终的数据集架构包含以下列:

first_name, last, last_name, address, phone_number

这意味着如果列名相同,我想“合并”输出数据框中的列,如果不相同,我想将两列分开。

我无法在一个联接中执行此操作,但只能执行两个联接,例如: df1.join(df2,'first_name','outer').join(df2,[df1.last==df2.last_name],'outer')

1 个答案:

答案 0 :(得分:0)

通过使用具有多个元素的联接条件,您应该能够一步完成联接:

join_cond = [df1.first_name == df2.first_name, df1.last == df2.last_name]
df_join = df1.join(df2, join_cond, 'outer')