我有三个要根据特定列的值进行合并的数据框。我不确定.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
是所有三个数据框中的唯一字段。数据框b
与loc=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
中的列address
和a
实际上应该带有来自None
。我需要确保每一行具有相同数量的列,包括行a
,即使它在数据帧loc=2
中完全丢失了。
谢谢您的帮助。