如何合并所有数据帧具有相同索引列的多个 pyspark 数据帧?

How to merge multiple pyspark dataframes where all dataframes have same index columns?

我使用以下代码创建了 pyspark 数据帧:

df_1 = sqlContext.createDataFrame(df_1)
df_2 = sqlContext.createDataFrame(df_2)
df_3 = sqlContext.createDataFrame(df_3)
df_4 = sqlContext.createDataFrame(df_4)

这些数据帧中的每一个都有2个公共列,我们可以将其用作索引列,其他列不同。我想合并两个数据框。

df_1

Firm Product Date Parameter-A
Firm-A Product-1 30-01-2019 3

df_2

Firm Product Date Parameter-B
Firm-A Product-1 30-01-2019 4

df_3

Firm Product Date Parameter-C
Firm-A Product-1 30-01-2019 5

df_4

Firm Product Date Parameter-D
Firm-A Product-1 30-01-2019 6

我希望生成的数据框如下所示。

df_result

Firm Product Date Parameter-A Parameter-B Parameter-C Parameter-D
Firm-A Product-1 30-01-2019 3 4 5 6

我试过下面的代码,但它只适用于 pandas 数据帧。

import pandas as pd
from functools import reduce

df = [df_1, df_2, df_3, df_4]
df_result = reduce(lambda left,right: pd.merge(left,right, how= 'left', on=['Firm', 'Product']), df)

这样做:

merged_df = df1.join(df2,on=['Firm', 'Product'], how='outer')\
   .join(df3,on=['Firm', 'Product'], how='outer')\
   .join(df4,on=['Firm', 'Product'], how='outer')\
   .join(df5,on=['Firm', 'Product']  how='outer')\
   .na.drop()
   .show()

display(merged_df)