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不允许我按关键变量合并。
谁能教我如何更有效地做到这一点?
给定的
>>> 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)
| 归档时间: |
|
| 查看次数: |
5394 次 |
| 最近记录: |