如何将来自不同DataFrame的项连接到一个公共DataFrame



假设我们有一个数据帧' a ':

Id    Name    FavColor    Address
1     John    Black       xyz
2     Mathew  Orange      www
3     Russel  Red         xxx

现在我有一个不同的数据集来更新一些列的值的情况,例如,让我们有DataFrame 'B':

Id    FavColor
1     Red
2     Black

和DataFrame 'C':

Id    Address
1     aaa
3     bbb

现在在这种情况下更新'B'和'C'需要合并到'A',我尝试合并'B'和'C',然后合并到'A',但当我合并'B'和'C'我得到:

Id    FavColor    Address
1     Red         aaa
2     Black       null
3     null        bbb

,如果我将这个与'A'合并,它将是错误的,因为Id=2的地址将变为null, Id=3的FavColor将变为null。我怎么能合并即将更新的数据与'A'和即将到来的数据可能有新的属性,在这种情况下,它应该显示null的项目没有值的属性在'A'。

尝试使用左连接合并数据并只获取更新的行。下面的代码合并了A和B,然后你可以用同样的方式将它们的结果与C合并。

scala> A.join(B, A("Id") === B("Id"), "left").
     | withColumn("merged", when(B("FavColor").isNotNull, B("FavColor")).otherwise(A("FavColor"))).
     | drop(B("FavColor")).drop(A("FavColor")).drop(B("Id")).
     | withColumnRenamed("merged", "FavColor").show()
+---+------+-------+--------+
| Id|  Name|Address|FavColor|
+---+------+-------+--------+
|  1|  John|    xyz|     Red|
|  2|Mathew|    www|   Black|
|  3|Russel|    xxx|     Red|
+---+------+-------+--------+

相关内容

  • 没有找到相关文章

最新更新