合并具有几个不同列的两个数据框

Abhishek tripathi

我想合并几个具有几个不同列的DataFrame。认为 ,

  • DataFrame A具有3列:Column_1,Column_2,Column 3

  • DataFrame B具有3列:Column_1,Columns_2,Column_4

  • DataFrame C具有3列:Column_1,Column_2,Column_5

我想合并这些DataFrame,这样我就得到一个DataFrame:

Column_1,Column_2,Column_3,Column_4 Column_5

DataFrame的数量可能会增加。有什么办法可以合并吗?这样,对于特定的Column_1 Column_2组合,我将获得同一行中其他三列的值;如果对于Column_1 Column_2的特定组合,某些列中没有数据,则该列应显示为null。

数据框A:

Column_1 Column_2 Column_3
   1        x        abc
   2        y        def

数据框B:

Column_1 Column_2 Column_4
   1        x        xyz
   2        y        www
   3        z        sdf

A和B的合并:

Column_1 Column_2 Column_3 Column_4
   1        x        abc     xyz
   2        y        def     www
   3        z        null    sdf
以利亚

如果我正确理解了您的问题,则需要使用一系列列作为键来执行外部联接。

我用您的问题中提供的数据来举例说明如何完成此工作:

scala> val df1 = Seq((1,"x","abc"),(2,"y","def")).toDF("Column_1","Column_2","Column_3")
// df1: org.apache.spark.sql.DataFrame = [Column_1: int, Column_2: string, Column_3: string]

scala> val df2 = Seq((1,"x","xyz"),(2,"y","www"),(3,"z","sdf")).toDF("Column_1","Column_2","Column_4")
// df2: org.apache.spark.sql.DataFrame = [Column_1: int, Column_2: string, Column_4: string]

scala> val df3 = df1.join(df2, Seq("Column_1","Column_2"), "outer")
// df3: org.apache.spark.sql.DataFrame = [Column_1: int, Column_2: string, Column_3: string, Column_4: string]

scala> df3.show
// +--------+--------+--------+--------+                                           
// |Column_1|Column_2|Column_3|Column_4|
// +--------+--------+--------+--------+
// |       1|       x|     abc|     xyz|
// |       2|       y|     def|     www|
// |       3|       z|    null|     sdf|
// +--------+--------+--------+--------+

这就是所谓的equi-join与其他DataFrame使用给定的列。

它与其他联接函数不同,联接列将仅在输出中出现一次,即类似于SQL的JOIN USING语法。

笔记

从Spark 1.6开始提供外部等联接。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java中将具有相同列名的两个数据框合并(合并)

熊猫合并具有不同列的两个数据框

合并/合并熊猫中具有不同频率时间序列索引的两个数据帧?

合并两个数据框以匹配具有不同长度的日期(不同的标题)

合并两个不同列中具有匹配值的数据框-Pandas

在Python中合并具有非唯一值的列中的两个数据框

Python Pandas-如何将具有两个不同列的两个数据框合并到两个列表列

如何合并具有不同索引的两个数据框?

合并具有不同dtype的两列数据框的值

在R中合并具有不同数据类型的不同键的两个数据帧

合并具有不同列数且没有相似列的两个数据帧

合并和汇总两个数据框(具有相同的列,但不包括总列数)

合并只有几个相同项目的两个数据框

合并两个具有不同行数和列数的数据框

Python Pandas:按索引合并两个数据框,并合并具有相同名称的列

合并两个具有相似列的数据框

合并具有相同列和行的两个数据框

如何在R中合并具有几个相同ID的两个数据框

如何合并一列中具有多个元素的两个数据框

熊猫合并具有不同日期和列的两个数据框

合并具有不同日期时间索引的两个数据框

合并两个数据框,保留所有列

具有不同可变长度列 b/w 两个数据框的箱线图

合并两个具有不同列数和顺序的数据框(熊猫)

合并具有不同列的两个火花数据框以获取所有列

在具有不同列的熊猫中添加两个数据框

将具有唯一值的两个数据框合并一列

合并具有不同列级别的两个数据框

R:外部合并具有不相等列的两个数据框