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

pandas DataFrame多条件过滤统计不合格参数及对应条目数咨询

问题原因
  • 范围判断规则错误:D、E的合法取值范围是100~300,异常应该是小于100或大于300,你写的<=110、>=800完全不符合要求,匹配不到正确的异常值。
  • 逻辑运算符使用错误:你用&(与逻辑)做筛选,意味着只有某条数据的所有参数都同时异常才会被选中,你的数据集里没有这种条目,自然返回空表。
实现方案

你可以先构造每个参数的异常判断矩阵,再统计每条数据的异常数量和对应的异常参数,再按需求分类统计即可,完整可运行代码如下:

import pandas as pd

# 构造原始数据
data = {'Item':['1', '2', '3', '4', '5'], 
'A':[142, 11, 50, 60, 12], 
'B':[55, 65, 130, 14, 69],
'C':[68, -18, 65, 16, 17],
'D':[60, 0, 150, 170, 130],
'E':[230, 200, 5, 10, 160]}
df = pd.DataFrame(data)

# 定义各参数的异常判断规则
abnormal_rules = {
    'A': lambda x: (x < -100) | (x > 100),
    'B': lambda x: (x < -100) | (x > 100),
    'C': lambda x: (x < -70) | (x > 70),
    'D': lambda x: (x < 100) | (x > 300),
    'E': lambda x: (x < 100) | (x > 300)
}

# 生成异常矩阵:值为True代表对应参数异常
abnormal_matrix = pd.DataFrame({col: abnormal_rules[col](df[col]) for col in abnormal_rules.keys()})

# 为原始表增加异常数量、异常参数列
df['异常参数数量'] = abnormal_matrix.sum(axis=1)
df['异常参数列表'] = abnormal_matrix.apply(lambda row: ','.join(row[row].index.tolist()), axis=1)

# 统计结果
# 总不合格条目
unqualified = df[df['异常参数数量'] >= 1]
# 单参数异常条目
single_abnormal = df[df['异常参数数量'] == 1]
# 多参数异常条目
multi_abnormal = df[df['异常参数数量'] >= 2]

# 输出统计结果
print(f"总不合格条目数:{len(unqualified)}")
print(f"单参数异常条目数:{len(single_abnormal)},明细:\n{single_abnormal[['Item','异常参数列表']]}")
print(f"多参数异常条目数:{len(multi_abnormal)},明细:\n{multi_abnormal[['Item','异常参数列表']]}")
输出结果说明

运行上述代码会得到和你示例需求完全一致的结果:

  • 5个条目中4个不合格
  • 2个条目存在多参数异常:条目1对应A、D,条目3对应B、E
  • 2个条目存在单参数异常:条目2对应D,条目4对应E

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:11