我有一个字典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'
不允许我通过键变量进行合并。
有人可以教我如何更有效地做到这一点吗?
答案 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