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

如何在Pandas数据框中筛选列间概率值相近的行

解决方法

要实现你需要的筛选逻辑,核心是只关注与每行最大概率值相近的情况,排除小概率值之间的无意义接近。可以按以下步骤用Pandas实现:

步骤1:分离概率列

先把数据框里的分类概率列单独提取出来,排除ID列:

prob_cols = [col for col in df.columns if col.startswith('class')]

步骤2:计算每行的最大概率值

给数据框新增一列,存储每行概率的最大值:

df['max_prob'] = df[prob_cols].max(axis=1)

步骤3:编写筛选逻辑函数

定义一个函数,检查每行是否存在至少2个概率值(包含最大值)的差值在0.05以内:

def has_close_max(row):
    max_p = row['max_prob']
    # 筛选出与最大值差值≤0.05的所有概率值
    close_values = row[prob_cols][abs(row[prob_cols] - max_p) <= 0.05]
    # 只要这类值的数量≥2,就符合条件
    return len(close_values) >= 2

步骤4:应用筛选条件并得到结果

用apply函数把筛选逻辑应用到每一行,过滤出符合条件的行:

# 生成筛选掩码
filter_mask = df.apply(has_close_max, axis=1)
# 筛选结果,去掉临时的max_prob列
result_df = df[filter_mask].drop('max_prob', axis=1)

最终结果

运行后result_df会输出你需要的行:

ID  class1  class2  class3  class4  class5
1  row2    0.97    0.96     0.4     0.3     0.2
3  row4    0.97    0.98     0.2     0.3     0.2
4  row5    0.10    0.20     0.3     0.78    0.80

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:30:54