如何在Python中合并字典中的所有数据框[重复]

Posted

技术标签:

【中文标题】如何在Python中合并字典中的所有数据框[重复]【英文标题】:How to merge all data-frames in a dictionary in Python [duplicate] 【发布时间】:2019-05-24 22:33:53 【问题描述】:

我有一本字典 dict 包含许多(超过 100 个)数据帧。每个数据帧包含两个变量name 和'value_i'。例如,此字典 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'concat 不允许我按关键变量合并。

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

【问题讨论】:

您的示例的预期输出是什么? 你应该看看this post,因为它涵盖了大量的合并信息。 我不确定所有的答案。看起来你想要pd.join(dict.keys(),how = 'outer', on = 'name'),它被重复的目标所覆盖。 对于 pd.join(dict.keys(),how = 'outer', on = 'name',我收到以下错误消息 module 'pandas' has no attribute 'join' 【参考方案1】:

假设您在dict 中有多个项目

d=i : j.set_index('name') for i,j in d.items()
yourdf=pd.concat(d,axis=1)

【讨论】:

如果 OP 的 dfs 中的 name 列具有所有唯一值,则有效。如果是这样的话,我想知道他们为什么要询问合并。 在这种情况下,变量名称更改为 (i, 'value_i')。有没有保留原来的变量名。 @timgeb 因为合并在链接 101 中有很好的解释,所以我正在尝试一些不同的东西 @fly36 检查***.com/questions/22233488/…【参考方案2】:

给定

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

【讨论】:

以上是关于如何在Python中合并字典中的所有数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中使用pandas将字典列表转换为数据框[重复]

在 Python 中合并数据框时出现重复的行

如何将数据框中的人口单元格与现有数据框合并和重复?

要合并的大文件。如何防止熊猫合并中的重复?

在python pandas中合并两个数据框[重复]

在 Pandas/Python 中合并两个数据框,保留数据框 1 中的所有列