我需要合并2个简单的DataFrame。两者都有一个共同的列,我想将此列用作索引。
>>> df1
A B
a b
0 0 3
1 1 4
2 2 5
>>> df2
A C
a c
0 2 6
1 1 7
2 0 8
我想要像
这样的东西>>> df
A B C
a b c
0 0 3 6
1 1 4 7
2 2 5 8
这不起作用
df1.merge(df2, left_on=(('A','a')), right_on=(('A','a')))
答案 0 :(得分:3)
您可以使用选择列的第一个想法来参数left_on
和right_on
:
df = (df1.merge(df2, left_on=df1[('A','a')], right_on=df2[('A','a')], suffixes=('','_'))
.drop(('A_','a'), 1))
print (df)
A B C
a b c
0 0 3 8
1 1 4 7
2 2 5 6
答案 1 :(得分:0)
实际上非常简单
>>> df1 = df1.set_index(('A','a'))
>>> df2 = df2.set_index(('A','a'))
>>> df = df1.merge(df2, right_index=True, left_index=True)
>>> df
B C
b c
(A, a)
0 3 8
1 4 7
2 5 6
>>> df.reset_index()
A B C
a b c
0 0 3 8
1 1 4 7
2 2 5 6