如何合并来自多个数据框的列

时间:2019-09-11 20:21:14

标签: python pyspark

我有三个要根据特定列的值进行合并的数据框。我不确定.join()是否是最好的方法(因为我必须扩展到超过20个数据帧)。

我已经读到another thread中也可以进行聚合,但是我不确定它是否适合我的用例。

a = |loc|sale|address|
    |1  |32  |foo    |
    |2  |12  |bar    |

b = |loc|app |ident  |
    |1  |32  |000    |


c = |loc|spa |cater  |
    |1  |11  |332    |
    |2  |99  |252    |

请注意,列loc是所有三个数据框中的唯一字段。数据框bloc=2没有一行。

我已经尝试过等参,但是遇到了两个问题

test = a.join(b, ['loc'], how='outer').join(c, ['loc'], how='outer')

My expected result is: 

test = |loc|sale|address|app |ident | spa | cater |
       |1  |32  |foo    |32  |000   |11   | 332   |
       |2  |12  |bar    |None|None  |99   | 252   |


My actual result is:
test = |loc|sale|address|app |ident | spa | cater |
       |1  |None|None   |32  |000   |11   | 332   |
       |2  |None|None   |None|None  |99   | 252   |


不需要的结果是,当我的第一个左数据帧sale中的列addressa实际上应该带有来自None。我需要确保每一行具有相同数量的列,包括行a,即使它在数据帧loc=2中完全丢失了。

谢谢您的帮助。

0 个答案:

没有答案