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

如何根据另一DataFrame的列值对目标DataFrame进行排序

错误原因

  • 直接触发报错的原因是reindex方法传入了df1['TestCaseName']这个带索引的Series对象,而非纯索引值列表。Pandas处理Series类型的index参数时会自动对齐两边的索引,而非直接使用Series的取值作为新索引,索引冲突时就会抛出ValueError: cannot reindex from a duplicate axis。
  • 额外注意示例代码里pd.dataframe拼写错误,正确写法是首字母大写的pd.DataFrame。

修复及更优实现方案

方案1:修复原有reindex写法

把传入的索引参数转为纯列表,避免索引对齐问题:

df2 = df2.set_index('TestCaseName')
df2 = df2.reindex(index=df1['TestCaseName'].tolist())
df2 = df2.reset_index()

方案2:用merge直接实现(最简洁)

直接基于df1做左连接,天然保留df1的TestCaseName顺序:

df2 = df1.merge(df2, on='TestCaseName', how='left')

方案3:用分类变量排序(适合需要长期保留该排序逻辑的场景)

将TestCaseName列设置为有序分类类型,后续排序都会按照指定顺序执行:

df2['TestCaseName'] = pd.Categorical(
    df2['TestCaseName'], 
    categories=df1['TestCaseName'], 
    ordered=True
)
df2 = df2.sort_values('TestCaseName').reset_index(drop=True)

以上三种方案都可以得到预期输出结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 07:24:09