熊猫合并不保留索引?

时间:2016-01-14 16:40:22

标签: python pandas

我有两个数据框:

left = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                     'B': ['B0', 'B1', 'B2', 'B3'],
                     'key': ['K0', 'K1', 'K0', 'K1']}, 
                    index = [9,10,11,12])

right = pd.DataFrame({'C': ['C0', 'C1'],
                      'key': ['K0', 'K1']})

当我运行pd.merge(left, right, on='key')时,我获得了一个包含 new 索引的新数据框:

    A   B key   C
0  A0  B0  K0  C0
1  A2  B2  K0  C0
2  A1  B1  K1  C1
3  A3  B3  K1  C1

我想要的是这个

     A   B key   C
9   A0  B0  K0  C0
11  A2  B2  K0  C0
10  A1  B1  K1  C1
12  A3  B3  K1  C1

我可以通过pd.merge(left, right, on='key', right_index = True)来做到这一点,但我觉得这更像是巧合然后的功能。

修改

所以解决方案是这样的:

left.merge(right.set_index("key"), left_on="key", right_index = True)

1 个答案:

答案 0 :(得分:2)

你也可以这样做:

left.reset_index().merge(right, on='key').set_index('index')

见这里:How to keep index when using pandas merge

我必须承认,我并不完全确定pandas合并时是否会保留索引,何时不保留索引。我希望对此更加开明!