基于列合并两个 Spark 数据框

Yuv*_*uva 0 python apache-spark pyspark databricks

我有 2 个数据框,需要根据列(员工代码)合并它们。请注意,数据框大约有 75 列,因此我提供了一个示例数据集来获取一些建议/示例解决方案。我正在使用 databricks,数据集是从 S3 读取的。

以下是我的 2 个数据框:

DATAFRAME - 1

|-----------------------------------------------------------------------------------|
|EMP_CODE   |COLUMN1|COLUMN2|COLUMN3|COLUMN4|COLUMN5|COLUMN6|COLUMN7|COLUMN8|COLUMN9|
|-----------------------------------------------------------------------------------|
|A10001     |   B   |       |       |       |       |       |       |       |       |
|-----------------------------------------------------------------------------------|


DATAFRAME - 2
|-----------------------------------------------------------------------------------|
|EMP_CODE   |COLUMN1|COLUMN2|COLUMN3|COLUMN4|COLUMN5|COLUMN6|COLUMN7|COLUMN8|COLUMN9|
|-----------------------------------------------------------------------------------|
|A10001     |       |       |       |       |   C   |       |       |       |       |   
|B10001     |       |       |       |       |       |       |       |       |T2     |
|A10001     |       |       |       |       |       |       |       |   B   |       |
|A10001     |       |       |   C   |       |       |       |       |       |       |
|C10001     |       |       |       |       |       |   C   |       |       |       |
|-----------------------------------------------------------------------------------|   
Run Code Online (Sandbox Code Playgroud)

我需要合并基于 EMP_CODE 的 2 个数据帧,基本上基于 emp_code 将 dataframe1 与 dataframe2 连接起来。当我进行连接时,我收到重复的列,我正在寻求一些帮助。

预期的最终数据框:

|-----------------------------------------------------------------------------------|
|EMP_CODE   |COLUMN1|COLUMN2|COLUMN3|COLUMN4|COLUMN5|COLUMN6|COLUMN7|COLUMN8|COLUMN9|
|-----------------------------------------------------------------------------------|
|A10001     |   B   |       |   C   |       |   C   |       |       |   B   |       |   
|B10001     |       |       |       |       |       |       |       |       |T2     |
|C10001     |       |       |       |       |       |   C   |       |       |       |
|-----------------------------------------------------------------------------------|       
Run Code Online (Sandbox Code Playgroud)

dataframe1 中有 3 行 emp_code A10001,dataframe2 中有 1 行。所有数据应合并为一条记录,没有任何重复的列。

非常感谢

Abh*_*kar 8

你可以使用内连接

output = df1.join(df2,['EMP_CODE'],how='inner')
Run Code Online (Sandbox Code Playgroud)

您也可以在末尾应用不同的内容来删除重复项。

output = df1.join(df2,['EMP_CODE'],how='inner').distinct()
Run Code Online (Sandbox Code Playgroud)