Python 合并两个字典的数据帧

Python 合并两个字典的数据帧,python,pandas,dictionary,Python,Pandas,Dictionary,我想获取两个独立的数据帧,每个数据帧由一组字典组成,并将它们组合起来以产生以下结果: df1 = pd.DataFrame([[{'a':1}, {'a':2}]]) df2 = pd.DataFrame([[{'b':1}, {'b':2}]]) df3 = pd.some_function(df1, df2) 其中,pd.some_函数获取两个dfs并执行字典的单元合并: 0 1 0 {u'a': 1, u'b'

我想获取两个独立的数据帧,每个数据帧由一组字典组成,并将它们组合起来以产生以下结果:

df1 = pd.DataFrame([[{'a':1}, {'a':2}]])
df2 = pd.DataFrame([[{'b':1}, {'b':2}]])
df3 = pd.some_function(df1, df2)
其中,
pd.some_函数
获取两个dfs并执行字典的单元合并:

                    0                   1
0  {u'a': 1, u'b': 1}  {u'a': 2, u'b': 2}

我知道我可以用for循环来实现这一点,但是有一个pandas函数可以更简洁地实现这一点吗?简单地添加dfs不起作用。我熟悉
df.applymap
,但我的理解是,通过使用
concat
+
ChainMap

from collections import ChainMap


df=pd.concat([df1,df2])
df.groupby(df.index)[0,1].agg(lambda x :dict(ChainMap(*x.values.tolist())))
Out[94]: 
                  0                 1
0  {'b': 1, 'a': 1}  {'b': 2, 'a': 2}

是否希望字典作为值存储在DF中?你知道这有点违背了熊猫的观点,因为你将无法应用矢量化操作?在制作数据帧之前,你的数据是什么样子的?这是一份字典清单吗?我认为您应该在该步骤之前对数据进行一些转换,以便优化DF的表示。在制作数据帧之前,我的数据是一个嵌套的字典列表。我意识到将其转换为df有点奇怪,但对于这个特定的应用程序,我使用pandas的多索引功能来帮助跟踪我的数据结构的不同级别,并将df分割成块进行进一步分析。您可以将它们存储为多索引数据帧,然后就merge@Acccumulation您能提供一个代码示例吗?:)我仍然情不自禁地认为这并不是OP想要做的事情,但我没有意识到像这样存储dict的低效性。也许我错了;这是一个优雅的回答,可以实现实际要求:)@roganjosh谢谢你,他的问题把我弄糊涂了well@Wen谢谢你的回答!我认为问题很清楚。我表示数据的方式可能会让您感到困惑,但请参见我对上面roganjosh的评论:)@Andreweweusser aha,明白了,这就是您所需要的吗?我希望不必导入额外的类并仅使用pandas函数来实现这一点,但如果不可能,这将起作用!谢谢:)