如何使用PySpark连接三个DataFrame得到指定字段的合并结果
多DataFrame关联实现方案
完全可以实现,你可以通过链式调用join/merge方法完成三个表的关联,需要注意的是你给出的示例代码里关联键写错了:df2和df1的关联字段应该是df2.df1_id,而非df2.df2_id。
PySpark 写法
# 分步写法(可读性更高) df1_df2 = df1.join(df2, df1.df1_id == df2.df1_id, how='left') dfResult = df1_df2.join(df3, df1_df2.df2_id == df3.df2_id, how='left') # 链式写法(无需存储中间变量) dfResult = df1.join(df2, df1.df1_id == df2.df1_id, how='left')\ .join(df3, df2.df2_id == df3.df2_id, how='left')
Pandas 写法
import pandas as pd # 因为关联字段名两边完全一致,直接用on参数指定即可 dfResult = pd.merge(df1, df2, on='df1_id', how='left')\ .merge(df3, on='df2_id', how='left')
两种写法最终得到的dfResult都会包含你需要的所有字段。
内容的提问来源于stack exchange,提问作者tharindu
相关产品推荐
相关产品推荐

