Pandas 如何在包含多索引的第三个数据帧的基础上合并2个数据帧

Pandas 如何在包含多索引的第三个数据帧的基础上合并2个数据帧,pandas,Pandas,我有2个数据帧,我想合并它们。我的连接键是索引,它们是第三个数据帧 两个数据帧: df1 = pd.DataFrame({'A' : [1,2,3] }) df2 = pd.DataFrame({'B' : ['A','B','C']}) 包含索引列表的数据帧: df3 = pd.DataFrame({'C' :[1], 'D' :[2]}) df3 = df3.set_index(['C','D']) 期望输出: A B 0 2 C 使用列表中的元组: 安装程序 使用

我有2个数据帧,我想合并它们。我的连接键是索引,它们是第三个数据帧

两个数据帧:

df1 = pd.DataFrame({'A' : [1,2,3] })
df2 = pd.DataFrame({'B' : ['A','B','C']})
包含索引列表的数据帧:

df3 = pd.DataFrame({'C' :[1], 'D' :[2]})
df3 = df3.set_index(['C','D'])
期望输出:

    A   B
0   2   C
使用列表中的元组:

安装程序 使用正确的列名生成df3:

df3 = pd.DataFrame(t, columns=list(df1.columns)+list(df2.columns))
#   A  B
#0  1  2
#1  1  0
然后,您可以使用
lookup
+
pivot
从每个帧获取正确的值,并返回到原始形状

df3 = df3.stack().reset_index()
df3['vals'] = pd.concat([df1, df2], 1).lookup(df3[0], df3.level_1)
df3 = df3.pivot(index='level_0', columns='level_1', values='vals').rename_axis(None, 1).rename_axis(None, 0)

#   A  B
#0  2  C
#1  2  A

这个逻辑对我来说并不明显。您如何知道第一个索引值取自
df1
,而第二个索引值取自
df2
?我猜df3索引名称应该是A,B/-:无逻辑:(我刚刚知道。我正在使用记录链接工具包模糊匹配2数据帧。它返回daframe中的可用对。第三个数据帧可以是元组[(1,2)]的列表。在这种情况下,元组的第一个数字是df1的索引,第二个数字是df2的索引
df3 = df3.stack().reset_index()
df3['vals'] = pd.concat([df1, df2], 1).lookup(df3[0], df3.level_1)
df3 = df3.pivot(index='level_0', columns='level_1', values='vals').rename_axis(None, 1).rename_axis(None, 0)

#   A  B
#0  2  C
#1  2  A