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

无需新建列,按两列线性组合排序Pandas DataFrame

无需新建列的Pandas多列线性组合排序方法

当然不用新建列,有几种简便方法可以直接实现:

  • 方法一:利用sort_values的key参数直接计算组合值
    直接在key函数里对DataFrame的指定列计算线性组合,返回的Series会作为排序依据:

    df.sort_values(key=lambda x: x['A'] * x['B'])
    

    运行后得到的结果就是按A*B排序后的DataFrame:

    AB
    041
    123

    (因为41=4,23=6,升序排序后原索引0在前,1在后)

  • 方法二:用eval处理复杂线性组合
    如果你的线性组合更复杂(比如2*A + 3*B),用eval写起来更直观:

    df.sort_values(key=lambda x: x.eval('A * B'))
    # 复杂组合示例:df.sort_values(key=lambda x: x.eval('2*A + 3*B'))
    
  • 方法三:通过索引重排实现
    先计算组合值的排序索引,再用loc重新排列DataFrame:

    df.loc[(df['A'] * df['B']).sort_values().index]
    

这些方法都不需要新增临时列,既节省内存,代码也更简洁。如果需要修改原DataFrame,加上inplace=True参数即可(不过更推荐返回新对象的写法,避免修改原数据)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:40:37