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

基于数组第7列值为0的行,对第5列数值求和(附Python代码)

解决方法:按条件求和TSV数据列

没问题,我来帮你搞定这个需求。首先得明确一个小细节:Python里的序列索引是从0开始的,所以你说的「第7列」对应的索引是6,「第5列」对应的索引是4——如果你的列数是从1开始数的话,这点一定要注意,避免搞错列位置。

结合你现有的代码,我帮你补充实现逻辑,直接上修改后的完整代码:

#!/usr/bin/python
#Date: 4.24.18
#importing necessary modules
import csv
import collections
import sys
from array import array

#variables for ease of use in script
fileName = 'medicaldata.tsv'
filePath = '/home/pjvaglic/Desktop/scripts/pythonScripts/final/data/'
# 拼接完整文件路径
full_file_path = f"{filePath}{fileName}"

# 初始化求和变量
total = 0

# 读取TSV文件并处理数据
with open(full_file_path, 'r') as tsv_file:
    # TSV是制表符分隔,所以指定delimiter为'\t'
    tsv_reader = csv.reader(tsv_file, delimiter='\t')
    # 跳过表头(如果你的文件有表头的话,不需要就删掉这行)
    next(tsv_reader)
    for row in tsv_reader:
        # 检查第7列(索引6)的值是否为0
        # 注意:如果数据里的0是字符串类型,就用row[6] == '0';如果是数值就转成int/float再判断
        if row[6] == '0':
            try:
                # 将第5列(索引4)的内容转为数值类型,加到总和里
                column_value = float(row[4])
                total += column_value
            except ValueError:
                # 处理列值无法转为数值的情况,比如空值或非数字字符串
                print(f"警告:行{row}的第5列不是有效数值,已跳过")

# 输出结果
print(f"符合条件的第5列数值总和为:{total}")

关键细节说明:

  • 用csv.reader处理TSV文件更可靠,自动处理制表符分隔,避免手动拆分字符串的问题
  • 加入了try-except块,防止数据里出现非数值的情况导致脚本崩溃
  • 如果你的TSV文件没有表头,记得删掉next(tsv_reader)这一行,不然会跳过第一行数据
  • 如果你确认第7列的0是数值类型(比如整数0),可以把判断条件改成int(row[6]) == 0,根据你的实际数据类型调整就行

内容的提问来源于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 09:23:25