【问题标题】:Pyspark: how to join two dataframes over multiple columns?Pyspark:如何在多列上连接两个数据框?
【发布时间】:2020-09-25 23:14:08
【问题描述】:

我有两个pyspark 数据框df1df2

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

【问题讨论】:

  • 多次加入。

标签: pyspark pyspark-dataframes


【解决方案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 中的其他列怎么办(请参阅修订版)?
  • 我没有任何改变,但结果已更新。您应该调试并提供信息,而不仅仅是说有错误。
猜你喜欢
  • 1970-01-01
  • 2020-09-19
  • 2017-04-02
  • 2018-03-08
  • 2021-09-25
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多