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

时间:2018-12-26 18:41:39

标签: python pandas dictionary dataframe

我有一个字典library("arules") data("Adult") rules <- apriori(Adult, parameter = list(supp = 0.5, conf = 0.9, target = "rules")) 包含许多(超过100个)数据帧。每个数据帧包含两个变量dict和'value_i'。例如,此字典name中的第一个数据帧如下所示:

dict[1]

类似地,此字典name value_1 A 1 B 1.1 C 2 中的第二个数据帧如下所示:

dict2

我想通过通用变量name value_2 A 1 B 1.1 D 1.3 合并此词典中的所有数据框。

预期结果应如下所示:

name

我知道我可以做多次name value_1 value_2 A 1 1 B 1.1 1.1 C 2 nan D nan 1.3 来将所有数据帧合并在一起。但这太低效了。

我尝试了pd.merge[dict[i], dict[i-1], how = 'outer', on = 'name',但是pd.concat(dict.values(), axis = 1, join='outer'不允许我通过键变量进行合并。

有人可以教我如何更有效地做到这一点吗?

2 个答案:

答案 0 :(得分:1)

考虑您在dict

中有多个项目
d={i : j.set_index('name') for i,j in d.items()}
yourdf=pd.concat(d,axis=1)

答案 1 :(得分:1)

给予

>>> 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

>>> d = {1: df1, 2: df2} 

您可以发布

>>> 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