我有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
答案 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