如何在Python中合并字典中的所有数据框
如何在Python中合并字典中的所有数据框
我有一个包含许多(超过100个)数据帧的字典dict
。每个数据帧都包含两个变量name
和\'value_i\'。例如,这个字典中的第一个数据帧dict[1]
如下所示:\n
name value_1 A 1 B 1.1 C 2
\n类似地,这个字典中的第二个数据帧dict2
如下所示:\n
name value_2 A 1 B 1.1 D 1.3
\n我想通过共同的变量name
合并字典中的所有数据帧。\n预期结果应该如下所示:\n
name value_1 value_2 A 1 1 B 1.1 1.1 C 2 nan D nan 1.3
\n我知道我可以使用pd.merge[dict[i], dict[i-1], how = \'outer\', on = \'name\'
多次合并所有数据帧。但这太低效了。\n我尝试了pd.concat(dict.values(), axis = 1, join=\'outer\'
,但concat
不允许我按键变量进行合并。\n有人可以教我如何更高效地做吗?
如何在Python中合并字典中的所有数据框
考虑到你在字典中有多个项
d={i : j.set_index('name') for i,j in d.items()} yourdf=pd.concat(d,axis=1)
如果OP的数据框中的name列具有所有唯一值,则可以正常工作。如果是这种情况,我想知道为什么他们会问关于合并的问题。
在这种情况下,变量名更改为(i,'value_i')。有没有办法保持原始的变量名。
由于在链接101中对合并进行了很好的解释,所以我正在尝试一些不同的方法。
请查看stackoverflow.com/questions/22233488/…以获取更多信息。
如何在Python中合并字典中的所有数据框
在数据处理和分析过程中,我们经常需要将多个数据框合并成一个以进行进一步的分析。如果我们有一个字典,其中包含多个数据框,我们可以使用以下方法将它们合并成一个数据框。
首先,让我们看一下给定的数据框。
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,其中包含两个数据框。
d = {1: df1, 2: df2}
要合并字典中的所有数据框,我们需要使用`functools`库中的`reduce`函数。首先,我们需要导入`partial`和`reduce`函数。
from functools import partial, reduce
然后,我们可以定义一个新函数`my_reduce`,它部分地应用了`pd.merge`函数,将`on`参数设置为'name',将`how`参数设置为'outer'。
my_reduce = partial(pd.merge, on='name', how='outer')
接下来,我们可以使用`reduce`函数将字典d中的所有数据框合并。
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
通过使用上述步骤,我们可以轻松地合并字典中的所有数据框,以便进行进一步的分析和处理。