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

Pandas如何保留前两行后对Ranking_value为0的行按Processing_time升序排序

Pandas 实现方案

核心逻辑为将数据集拆分为「Ranking_value非0」和「Ranking_value为0」两部分,前者保留原有顺序,后者按指定规则排序后再合并。

完整代码

import pandas as pd

# 构造示例数据(实际使用时替换为你自己的DataFrame即可)
df = pd.DataFrame({
    "Testcase": ["t1", "t2", "t3", "t4"],
    "Processing_time": [1.102088, 1.718864, 25, 15],
    "Pass": [8, 19, 22, 22],
    "Fail": [26, 3, 0, 0],
    "avg_failure_rate": [76.47, 13.63, 0, 0],
    "Ranking_value": [69.38, 7.93, 0, 0]
})

# 1. 筛选出Ranking_value不等于0的行,直接保留原顺序
df_part1 = df[df["Ranking_value"] != 0]
# 2. 筛选出Ranking_value等于0的行,按Processing_time升序排序
df_part2 = df[df["Ranking_value"] == 0].sort_values(by="Processing_time", ascending=True)
# 3. 拼接两部分数据,重置索引
res_df = pd.concat([df_part1, df_part2], ignore_index=True)

# 输出结果验证
print(res_df)

注意事项

如果Ranking_value字段为浮点类型,存在精度误差导致==0判断失效的情况,可以使用numpy.isclose做近似判断,修改筛选逻辑为:

import numpy as np
df_part1 = df[~np.isclose(df["Ranking_value"], 0)]
df_part2 = df[np.isclose(df["Ranking_value"], 0)].sort_values(by="Processing_time", ascending=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:36:06