Skip to main content
 首页 » 编程设计

python之从csv文件Python计算一行值的总和

2025年05月04日32yyy_WW

我正在尝试计算 csv 文件中所有值的总和,该文件的第一列包含一个键。所有这些数据都将放在 Python 的字典中。

到目前为止,我已经想出了这段代码。唯一的问题是并不是所有的值都是整数,有些是空白的并且包含字符串。我需要更新代码以忽略这些。

一个明显的改进是计算文件的列数,而不是假设它最多有三列数据,但我不太确定如何实现它!

import csv   
d = {} 
with open(filename) as csvfile: 
    rdr = csv.reader(csvfile) 
    if header == True: 
        next(rdr, None) 
    for row in rdr: 
        d[row[0]] = int(row[1]) + int(row[2]) + int(row[3]) 
return d 

感谢您的帮助!

请您参考如下方法:

使用 try/except 将每个元素转换为 float:

import csv 
from collections import defaultdict 
with open(filename) as csvfile: 
    next(csvfile) 
    rdr = csv.reader(csvfile) 
    d = defaultdict(float) 
    for row in rdr: 
        for v in row[1:]: 
            try: 
                d[row[0]] += float(v) 
            except ValueError: 
                pass 
    print(d) 

如果该值可以转换为 float ,则键的值将递增,否则我们会捕获错误并继续。

输入:

a,b,c,d 
1,"foo",3,"" 
2,5,"fuzz",12.12 
3,"","bar",33.3 

输出:

defaultdict(<class 'float'>, {'1': 3.0, '2': 17.119999999999997, '3': 33.3})