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

如何根据行属性对指定列元素分组求和?代码返回0问题排查

解决多维数组按行属性求和的问题

我帮你排查下代码里的问题,你现在求和结果都是0,主要是这几个地方出了错:

  • 字符串与整数的比较不匹配:csv.reader读取出来的每一行元素都是字符串类型,你直接拿row[6]和整数1、0比较,永远不会相等,所以两个条件块根本没执行,求和变量自然一直是初始的0。
  • 累加运算符写错了:你用的=+是赋值正数值的意思,不是累加操作,正确的累加应该用+=。
  • 求和变量未初始化:如果在循环前没给sumNSal和sumNSalR设置初始值0,第一次执行累加时会报错,所以必须先初始化。

修正后的代码如下:

import csv  # 记得导入csv模块哦

sumNSal = 0
sumNSalR = 0

with open(filePath + fileName, 'rt') as inputfile2:
    next(inputfile2)  # 跳过表头
    dataArray = csv.reader(inputfile2, delimiter='\t')
    for row in dataArray:
        # 先把row[6]转成整数再比较
        if int(row[6]) == 1:
            sumNSal += int(row[4])  # 用+=做累加
        elif int(row[6]) == 0:
            sumNSalR += int(row[4])

print(sumNSal, sumNSalR)

另外补充两个小建议:

  • 用elif替代第二个if,这样逻辑更严谨,避免同一行被两个条件同时判断(虽然这里row[6]只能是0或1,但习惯上用elif更高效)。
  • 如果你的数据里可能存在空值或者非数字的情况,可以加个异常处理,比如用try-except包裹转换整数的操作,避免程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:35:25