加入3个数据帧时遇到麻烦 - pyspark

时间:2018-02-12 01:25:07

标签: python pyspark

我有三个数据帧,当我加入它时出现错误。以下是3个数据框:

名称:r_df 第1栏:lab_key 第2栏:框架

名称:f_df 第1栏:lab_key 第2栏:光学

名称:m_df 第1栏:lab_key 第2栏:res

所有三个数据帧都有相同数量的行250,每个数据帧都有相同的lab_keys。

我的代码如下所示:

newDF = r_df.join(f_df, r_df.lab_key == f_df.lab_key).join(m_df, r_df.lab_key == m_df.lab_key).select('r_df.frame', 'f_df.optic', 'm_df.res')

我收到错误:

Py4JJavaError:调用o902.join时发生错误。 :org.apache.spark.sql.AnalysisException:Reference' lab_key'含糊不清,可能是:lab_key#1648,lab_key#1954。;

对问题可能不是很有帮助。我正在尝试使用以下列来获取一个数据框:

第1栏:lab_key
第2栏:框架
第3栏:视盘
第4栏:res

你能帮我加入这三个数据框吗?

1 个答案:

答案 0 :(得分:7)

这是因为在第一次连接之后创建的pyspark数据帧有两列,其中列的名称相同。

r_df.join(f_df, ["lab_key"]).join(m_df, ["lab_key"])

如果您要加入的密钥相同,则无需从数据框中专门引用该列,而只需将名称指定为数组。这将告诉Pyspark在最终数据框中只创建一个具有该名称的列