首页 > 解决方案 > 基于相同的列名加入多个 Pyspark 数据框

问题描述

我是 Pyspark 的新手,所以我坚持以下几点:

我有 5 个数据帧,每个数据帧都有相同的主键,称为关注代码。我需要将所有这些数据帧外部连接在一起,并且需要从 4 个数据帧中删除名为关注代码的 4 列。

例如:Dataframe Df1 外连接 Df2 基于关注代码 Dataframe Df1 外连接 Df3 基于关注代码等等。

我当前的 Pyspark 语法如下所示:

df1.join(df2,["concern_code"])\
  .join(df3,df1["concern_code"] == df3["concern_code"])\
  .join(df4,df1["concern_code"] == df4["concern_code"])\
  .join(df5,df1["concern_code"] == df5["concern_code"])\
   .show()

我如何需要修复语法以执行外连接并拥有一个新数据框的最终版本,它只有一个关注代码列?

标签: pythondataframepyspark

解决方案


如果您在列上加入两个数据框,那么列将被复制,就像您的情况一样。所以我建议使用一个字符串数组,或者只是一个字符串,即'id',来连接两个或多个数据帧。

下面的代码不应重复列名:

df1.join(df2,on='id', how='outer')\
   .join(df3,on='id', how='outer')\
   .join(df4,on='id', how='outer')\
   .join(df5,on='id'  how='outer')\
   .show()

推荐阅读