Pyspark:如何在多列上连接两个数据帧?

Pyspark:如何在多列上连接两个数据帧?,pyspark,pyspark-dataframes,Pyspark,Pyspark Dataframes,我有两个pysparkdataframesdf1和df2 df1 id1 id2 id3 x y 0 1 2 0.5 0.4 2 1 0 0.3 0.2 3 0 2 0.8 0.9 2 1 3 0.2 0.1 df2 id name 0 A

我有两个
pyspark
dataframes
df1
df2

df1
       id1   id2    id3    x    y
        0     1      2    0.5  0.4
        2     1      0    0.3  0.2
        3     0      2    0.8  0.9 
        2     1      3    0.2  0.1

df2
       id     name
        0      A 
        1      B
        2      C
        3      D
我想加入两个数据帧并

df3
       id1   id2    id3    n1   n2   n3   x    y 
        0     1      2     A    B    C   0.5  0.4
        2     1      0     C    B    A   0.3  0.2 
        3     0      2     D    A    C   0.8  0.9
        2     1      3     C    B    D   0.2  0.1

这是多重连接

df1.join(df2, df1['id1'] == df2['id'], 'left').drop('id').withColumnRenamed('name', 'n1') \
   .join(df2, df1['id2'] == df2['id'], 'left').drop('id').withColumnRenamed('name', 'n2') \
   .join(df2, df1['id3'] == df2['id'], 'left').drop('id').withColumnRenamed('name', 'n3') \
   .show()

+---+---+---+---+---+---+---+---+
|id1|id2|id3|  x|  y| n1| n2| n3|
+---+---+---+---+---+---+---+---+
|  0|  1|  2|0.5|0.4|  A|  B|  C|
|  2|  1|  0|0.3|0.2|  C|  B|  A|
|  3|  0|  2|0.8|0.9|  D|  A|  C|
|  2|  1|  3|0.2|0.1|  C|  B|  D|
+---+---+---+---+---+---+---+---+

多次加入。如果您想保留
df1
中的其他列(请参阅修订版),该怎么办?我没有任何更改,但结果已更新。您应该调试并提供信息,而不仅仅是说有错误。