我有三个数据帧,当我加入它时出现错误。以下是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
你能帮我加入这三个数据框吗?
答案 0 :(得分:7)
这是因为在第一次连接之后创建的pyspark数据帧有两列,其中列的名称相同。
r_df.join(f_df, ["lab_key"]).join(m_df, ["lab_key"])
如果您要加入的密钥相同,则无需从数据框中专门引用该列,而只需将名称指定为数组。这将告诉Pyspark在最终数据框中只创建一个具有该名称的列