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

移除Pandas DataFrame中相邻行相对差异低于阈值的低置信度行

处理Pandas DataFrame相邻行的过滤需求

先修正计算代码的笔误

你计算relative_xc_diff的代码里有个列名错误,最后一行的df["relative_x_diff"]应该改为df["relative_xc_diff"],修正后的完整代码:

x_centers = df["x_center"].values
relative_xc_diff = (abs(x_centers[1:] - x_centers[:-1]) / df["width"].values[:-1]) * 100
df["relative_xc_diff"] = 0
df["relative_xc_diff"].values[1:] = relative_xc_diff

实现相邻行过滤逻辑

要实现当relative_xc_diff < 50时保留置信度更高的行,我们可以先标记需要保留的行,再统一过滤,避免边删边遍历导致的索引混乱:

# 初始化保留标记,默认全保留
keep = [True] * len(df)

# 遍历从第2行开始的每一行(索引从1开始)
for i in range(1, len(df)):
    # 检查当前行的相对差异是否小于50
    if df["relative_xc_diff"].iloc[i] < 50:
        # 比较当前行与前一行的confidence
        current_conf = df["confidence"].iloc[i]
        prev_conf = df["confidence"].iloc[i-1]
        if current_conf < prev_conf:
            # 当前行置信度更低,标记为删除
            keep[i] = False
        else:
            # 前一行置信度更低,标记为删除
            keep[i-1] = False

# 应用过滤得到结果
df_filtered = df[keep]

验证结果

针对你给出的示例DataFrame,运行上述代码后:

  • 索引4和5的relative_xc_diff为45.12<50,索引4的confidence(0.86141)更高,所以标记索引5为删除
  • 索引7和8的relative_xc_diff为34.33<50,索引8的confidence(0.82202)更高,所以标记索引7为删除

最终df_filtered会去掉索引5和7的行,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:35:40