我试过搜索,但虽然我得到了类似的情况,我没有找到我要找的。
我有以下两个Dataframe:
+---------------------------+
| ID| Value| type |
+---------------------------+
| user0| 100 | Car |
| user1| 102 | Car |
| user2| 109 | Dog |
| user3| 103 | NA |
| user4| 110 | Dog |
| user5| null | null |
| user6| null | null |
| user7| null | null |
+---------------------------+
+---------------------------+
| ID2| Value2| type2|
+---------------------------+
| user5| 115 | Cell |
| user6| 103 | Cell |
| user7| 100 | Fridge|
+---------------------------+
我想加入这两个团队,结果是:
+---------------------------+
| ID| Value| type |
+---------------------------+
| user0| 100 | Car |
| user1| 102 | Car |
| user2| 109 | Dog |
| user3| 103 | NA |
| user4| 110 | Dog |
| user5| 115 | Cell |
| user6| 103 | Cell |
| user7| 100 | Fridge |
+---------------------------+
我尝试了以下方法,但没有得到预期的结果:
df_joined= df1.join(df2,(df1.id==df2.id2) &
(df1.value==df2.value2) &
(df1.type==df2.type2),
"left").drop('id2','value2','type2')
我只从第一个df得到值,可能left不是right连接类型,但我不明白应该使用什么。
2条答案
按热度按时间izj3ouym1#
您只需要使用id连接,而不是其他列,因为其他列不相同。要组合其他列,请使用
coalesce
,它给出第一个非空值。ykejflvf2#
也可以使用并集,然后获得最大值: