如何在 Python 中合并字典中的所有数据框

fly*_*y36 8 python dictionary dataframe pandas

我有一本字典,dict其中包含许多(超过 100 个)数据框。每个数据帧包含两个变量name和“value_i”。例如,此字典中的第一个数据框dict[1]如下所示:

name  value_1
A      1
B      1.1 
C      2
Run Code Online (Sandbox Code Playgroud)

同样,此字典中的第二个数据框dict2如下所示:

name  value_2
A      1
B      1.1 
D      1.3
Run Code Online (Sandbox Code Playgroud)

我想通过公共变量合并此字典中的所有数据帧name

预期结果应如下所示:

name  value_1   value_2
A      1         1
B      1.1       1.1
C      2         nan
D     nan           1.3
Run Code Online (Sandbox Code Playgroud)

我知道我可以pd.merge[dict[i], dict[i-1], how = 'outer', on = 'name'多次将所有数据帧合并在一起。但这太低效了。

我试过pd.concat(dict.values(), axis = 1, join='outer'concat不允许我按关键变量合并。

谁能教我如何更有效地做到这一点?

tim*_*geb 5

给定的

>>> df1                                                                                                                
  name  value_1
0    A      1.0
1    B      1.1
2    C      2.0
>>> df2                                                                                                                
  name  value_2
0    A      1.0
1    B      1.1
2    D      1.3
Run Code Online (Sandbox Code Playgroud)

>>> d = {1: df1, 2: df2} 
Run Code Online (Sandbox Code Playgroud)

你可以发出

>>> from functools import partial, reduce                                                                              
>>>                                                                                                                    
>>> my_reduce = partial(pd.merge, on='name', how='outer')                                                              
>>> reduce(my_reduce, d.values())                                                                                      
  name  value_1  value_2
0    A      1.0      1.0
1    B      1.1      1.1
2    C      2.0      NaN
3    D      NaN      1.3
Run Code Online (Sandbox Code Playgroud)