Join 在不重复组合的情况下连接两个数据帧列
我想加入两个数据帧的“item”列Join 在不重复组合的情况下连接两个数据帧列,join,pyspark,inner-join,Join,Pyspark,Inner Join,我想加入两个数据帧的“item”列 Dataframe1(df1) id item 1 1 1 2 1 2 Dataframe2(df2) _id item 44 1 44 2 44 2 为了返回匹配的值,我尝试了内部联接 out= df1.join(df2, df2.item==df1.item, 'inner') +---+----+----+---+ | id|item|item|_id| +---+-
Dataframe1(df1)
id item
1 1
1 2
1 2
Dataframe2(df2)
_id item
44 1
44 2
44 2
为了返回匹配的值,我尝试了内部联接
out= df1.join(df2, df2.item==df1.item, 'inner')
+---+----+----+---+
| id|item|item|_id|
+---+----+----+---+
| 1| [1]| [1]| 44|
| 1| [2]| [2]| 44|
| 1| [2]| [2]| 44|
| 1| [2]| [2]| 44|
| 1| [2]| [2]| 44|
+---+----+----+---
但我希望得到如下结果,不包括重复匹配组合
+---+----+----+---+
| id|item|item|_id|
+---+----+----+---+
| 1| [1]| [1]| 44|
| 1| [2]| [2]| 44|
| 1| [2]| [2]| 44|
+---+----+----+---+
另一个例子可能是
Dataframe1(df1)
id item
1 1
1 2
1 1
Dataframe2(df2)
_id item
44 1
44 2
结果应该是
+---+----+----+---+
| id|item|item|_id|
+---+----+----+---+
| 1| [1]| [1]| 44|
| 1| [2]| [2]| 44|
+---+----+----+---+
试试这个:
选择不同的a.id、a.item、b.id、b.item
来自DF1A
内连接df2 b
在a.item=b.item上
按项目订购强>
它肯定会解决您的问题。使用删除重复项()
实现这一点的最佳方法是使用左半连接
df1 = spark.createDataFrame([(1,1),(1,2),(1,2)],['id','item'])
df2 = spark.createDataFrame([(44,1),(44,2),(44,2)],['id','item'])
df1.join(df2, df2.item==df1.item, 'left_semi').show()
df1 = spark.createDataFrame([(1,1),(1,2),(1,2)],['id','item'])
df2 = spark.createDataFrame([(44,1),(44,2),(44,2)],['id','item'])
df1.join(df2, df2.item==df1.item, 'left_semi').show()