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' 对象不可调用。
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)
| 归档时间: |
|
| 查看次数: |
11384 次 |
| 最近记录: |