如何基于包含多索引的第三个数据框合并2个数据框

时间:2018-10-22 14:28:32

标签: 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

1 个答案:

答案 0 :(得分:1)

列表中有元组

设置

import pandas as pd

df1 = pd.DataFrame({'A' : [1,2,3] })
df2 = pd.DataFrame({'B' : ['A','B','C']})
t = [(1,2), (1,0)]

使用正确的列名称制作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