通过Mutliindex列合并DataFrame

时间:2018-04-24 10:38:58

标签: python python-3.x pandas dataframe

我需要合并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')))

2 个答案:

答案 0 :(得分:3)

您可以使用选择列的第一个想法来参数left_onright_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