如何在Pyspark中基于1列水平组合多个数据帧



我想根据它们的ID列将这3个数据帧组合起来,并获得以下输出。我正在寻找一种简短的方法,以便稍后使用它来组合更多数量的数据帧。

输入:

+---+---+---+
| ID|  a|  b|
+---+---+---+
|  A|  1|  1|
|  B|  2|  2|
+---+---+---+
+---+---+---+
| ID|  c|  d|
+---+---+---+
|  A|  3|333|
|  B|  4|444|
+---+---+---+
+---+---+---+
| ID|  e|  f|
+---+---+---+
|  A|555|  5|
|  B|666|  6|
+---+---+---+

输出:

+---+---+---+---+---+---+---+
| ID|  a|  b|  c|  d|  e|  f|
+---+---+---+---+---+---+---+
|  A|  1|  1|  3|333|555|  5|
|  B|  2|  2|  4|444|666|  6|
+---+---+---+---+---+---+---+

答案:对于以后可能觉得有用的人!

# create list of dataframes
list_df = [df1, df2, df3]
# merge all at once
df_all = reduce(lambda x, y: x.join(y, on="ID"), list_df)

这3个数据帧可以根据ID列进行转换。

df = df1.join(df2, 'ID').join(df3, 'ID')

最新更新