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

使用Pandas基于另一列多筛选值匹配某列子串并聚合Count列求和

嘿,我明白你要做的是同时满足两个条件的Count列求和——既要Name列包含指定子串(比如Ehsan),又要Error Name列的值是Device或者Line Error对吧?下面给你整理了几种常用工具的实现方法,按需取用就行:

1. Excel 公式实现

方法一:用SUMIFS函数(推荐,逻辑清晰)

SUMIFS支持多条件求和,这里我们把「Error Name是Device或Line Error」拆成两个并列条件:

=SUMIFS($C$2:$C$100, $A$2:$A$100, "*Ehsan*", $B$2:$B$100, "Device", $B$2:$B$100, "Line Error")
  • 替换$C$2:$C$100为你的Count列实际范围
  • 替换$A$2:$A$100为Name列实际范围
  • 替换$B$2:$B$100为Error Name列实际范围
  • *是通配符,*Ehsan*表示包含Ehsan的任意文本

方法二:用SUMPRODUCT函数(更灵活,适合复杂逻辑)

如果需要不区分大小写匹配,或者后续要扩展条件,用SUMPRODUCT更方便:

=SUMPRODUCT((ISNUMBER(SEARCH("Ehsan", $A$2:$A$100)))*((($B$2:$B$100="Device")+($B$2:$B$100="Line Error"))>0)*$C$2:$C$100)
  • SEARCH("Ehsan", ...)不区分大小写查找子串,ISNUMBER判断是否找到
  • (条件1)+(条件2)实现逻辑「或」,>0确保只要满足其中一个就返回True
  • 各条件相乘相当于逻辑「与」,最后乘以Count列得到求和结果

2. Python Pandas 实现

假设你的数据已经加载到DataFrame df中,代码如下:

# 筛选同时满足两个条件的行
filtered_rows = df[
    df['Name'].str.contains('Ehsan', case=False)  # Name包含Ehsan(不区分大小写)
    & df['Error Name'].isin(['Device', 'Line Error'])  # Error Name是指定值之一
]

# 对筛选后的Count列求和
total_count = filtered_rows['Count'].sum()

print(f"符合条件的Count总和为:{total_count}")
  • 去掉case=False即可开启严格大小写匹配
  • isin()方法比多个==用|连接更简洁,适合多值匹配场景

3. SQL 实现

假设你的数据存储在表error_records中,字段分别为name、error_name、count,SQL查询语句如下:

SELECT SUM(count) AS total_matching_count
FROM error_records
WHERE name LIKE '%Ehsan%'
  AND error_name IN ('Device', 'Line Error');
  • LIKE '%Ehsan%'匹配所有包含Ehsan的name值(SQL默认区分大小写,忽略大小写可根据数据库调整:MySQL用LIKE BINARY '%Ehsan%',PostgreSQL用ILIKE '%Ehsan%')
  • IN ('Device', 'Line Error')等价于error_name = 'Device' OR error_name = 'Line Error',写法更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 00:38:10