当前位置: 代码迷 >> python >> 加入 3 个数据帧时遇到问题 - pyspark
  详细解决方案

加入 3 个数据帧时遇到问题 - pyspark

热度:87   发布时间:2023-07-16 10:33:42.0

我有三个数据框,当我加入它们时出现错误。 这是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:引用“lab_key”不明确,可能是:lab_key#1648,lab_key#1954。;

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

第 1 列:lab_key
第 2 栏:框架
第 3 栏:光学
第 4 栏:资源

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

这是因为在第一次连接后创建的 pyspark 数据框有两列具有完全相同的列名。

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

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