基于数组第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
相关产品推荐
相关产品推荐

