熊猫合并不保留索引?

mja*_*ski 2 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']})
Run Code Online (Sandbox Code Playgroud)

当我运行时,pd.merge(left, right, on='key')我得到一个带有索引的新数据框:

    A   B key   C
0  A0  B0  K0  C0
1  A2  B2  K0  C0
2  A1  B1  K1  C1
3  A3  B3  K1  C1
Run Code Online (Sandbox Code Playgroud)

我想得到的是这个

     A   B key   C
9   A0  B0  K0  C0
11  A2  B2  K0  C0
10  A1  B1  K1  C1
12  A3  B3  K1  C1
Run Code Online (Sandbox Code Playgroud)

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

编辑

所以解决方案是这样的:

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

Mat*_*hew 5

你也可以这样做:

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

请参阅此处:如何在使用 Pandas 合并时保留索引

我必须承认,我不完全确定 pandas merge 何时保留索引,何时不保留。我很想对此有更多的启发!