我想合并两个数据框。
列表1:
id
0 1234
1 456
2 789
3 101112
清单2:
id age
0 456 18
1 101112 52
期望的结果:
id age
0 1234 Na
1 456 18
2 789 Na
3 101112 52
尝试:
list1.join(list2,list1.id==list2.id,'inner')
错误:
ValueError: Can only compare identically-labeled Series objects
尝试:
list1.merge(list2)
错误:
结果是清单2.
问题是什么?
答案 0 :(得分:2)
您需要执行left_outer
联接,因此不会删除记录
list3 = list1.join(list2, 'id', 'left_outer')
list3.show()
+------+----+
| id| age|
+------+----+
| 789|null|
| 1234|null|
|101112| 52|
| 456| 18|
+------+----+
答案 1 :(得分:1)
如果你有两个dataframe
list1 = sqlContext.createDataFrame([(1234,), (456,), (789,), (101112,)], ["id"])
list1.show()
+------+
| id|
+------+
| 1234|
| 456|
| 789|
|101112|
+------+
和
list2 = sqlContext.createDataFrame([(456,18), (101112, 52)], ["id", "age"])
list2.show()
+------+---+
| id|age|
+------+---+
| 456| 18|
|101112| 52|
+------+---+
left join
可以为您提供所需的结果
list1.join(list2, "id", "left").show()
+------+----+
| id| age|
+------+----+
| 789|null|
| 1234|null|
|101112| 52|
| 456| 18|
+------+----+