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

Python pandas合并DataFrame时如何保留原df1的行顺序

解决方案

pandas默认的merge在按索引关联时会自动对匹配到的索引值做排序,因此会打乱左表原始行顺序。要保留df1的原有行序,推荐以下两种实现方式:

方法1:用join替代merge(最优方案)

join默认以左表为基准做关联,会完整保留左表的原始行顺序,直接替换原有合并代码即可:

# 原merge代码替换为这行
df1 = df1.join(df)

执行后得到的df1行序和原始df1完全一致,Rating序列保持['AA','AA','AA','AA','A','A'],值匹配逻辑和merge完全一致,代码最简洁、性能也更好。

方法2:必须使用merge时的兼容写法

如果场景要求必须用merge实现,可以先给df1增加一列存储原始行号,合并完成后按该行号还原顺序,代码如下:

# 暂存原始行序,重置索引把Rating转为普通列
df1 = df1.reset_index().assign(raw_sort_id=range(len(df1)))
# 执行合并
df1 = df1.merge(df, left_on='Rating', right_index=True)
# 还原原始行序、清理临时字段、恢复索引
df1 = df1.sort_values('raw_sort_id')\
         .drop(columns='raw_sort_id')\
         .set_index('Rating')

注意:两种方法最终得到的结果完全一致,日常使用优先选方法1即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:54:18