我有这两个数据框:
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)
你也可以这样做:
left.reset_index().merge(right, on='key').set_index('index')
请参阅此处:如何在使用 Pandas 合并时保留索引
我必须承认,我不完全确定 pandas merge 何时保留索引,何时不保留。我很想对此有更多的启发!
| 归档时间: |
|
| 查看次数: |
5425 次 |
| 最近记录: |