将 pyspark 中的两个数据框按一列连接起来

jov*_*cbg 1 join apache-spark pyspark

我有两个数据帧,我需要按一列连接,并且如果该 id 包含在第二个数据帧的同一列中,则仅从第一个数据帧中获取行:

df1:

  id    a     b
  2     1     1
  3    0.5    1
  4     1     2
  5     2     1
Run Code Online (Sandbox Code Playgroud)

df2:

 id      c    d
  2      fs   a
  5      fa   f
Run Code Online (Sandbox Code Playgroud)

期望的输出:

df:
  id   a   b
   2   1   1
   5   2   1
Run Code Online (Sandbox Code Playgroud)

我尝试过 df1.join(df2("id"),"left"),但出现错误:'Dataframe' 对象不可调用。

Psi*_*dom 5

df2("id")不是用于选择列的有效 python 语法,您需要df2[["id"]]或使用select df2.select("id"); 对于您的示例,您可以执行以下操作:

df1.join(df2.select("id"), "id").show()

+---+---+---+
| id|  a|  b|
+---+---+---+
|  5|2.0|  1|
|  2|1.0|  1|
+---+---+---+
Run Code Online (Sandbox Code Playgroud)

或者:

df1.join(df2[["id"]], "id").show()
+---+---+---+
| id|  a|  b|
+---+---+---+
|  5|2.0|  1|
|  2|1.0|  1|
+---+---+---+
Run Code Online (Sandbox Code Playgroud)