You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行left merge后如何保留old_2 DataFrame的原有索引?

解决Pandas左连接后保留原索引的问题

你遇到的问题是merge默认会重置索引,生成连续的新索引,要保留old_2的原有索引,有两种简单的实现方式:

方法一:直接赋值原索引

因为左连接(how='left')的结果行数和左表old_2完全一致,所以可以在merge后直接把old_2的索引赋值给结果的索引:

old_changed = old_2.merge(compare_old_df, how='left')
# 直接复用old_2的原有索引
old_changed.index = old_2.index

执行后结果会保留old_2的[0,1,4]索引:

some_column key_column audit_column_1 audit_column_2
0    old_val_0  changed_0            foo            bar
1    old_val_1  changed_1            foo            bar
4    old_val_2  changed_2            foo            bar

方法二:先保存原索引再恢复

如果需要更清晰的步骤(比如后续还要用到原索引列),可以先把old_2的索引转为普通列,merge后再恢复为索引:

# 将原索引转为名为original_index的列
old_2_temp = old_2.reset_index(names='original_index')
# 执行左连接
old_changed_temp = old_2_temp.merge(compare_old_df, how='left')
# 将临时列恢复为索引
old_changed = old_changed_temp.set_index('original_index')

最终结果和方法一一致,且如果需要的话可以保留original_index列(去掉set_index步骤即可)。

内容的提问来源于stack exchange,提问作者Seeker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 04:37:34