问题描述
我有三个数据框,当我加入它们时出现错误。 这是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 栏:资源
你能帮我加入这三个数据框吗?
1楼
这是因为在第一次连接后创建的 pyspark 数据框有两列具有完全相同的列名。
r_df.join(f_df, ["lab_key"]).join(m_df, ["lab_key"])
如果您加入的键相同,则无需从数据框中专门引用该列,而只需将名称指定为数组。 这将告诉 Pyspark 在最终数据框中仅创建一个具有该名称的列