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

2024-04-25 07:39:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算一个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

谢谢你的帮助!在


Tags: 文件csv数据csvfile字符串代码import字典
2条回答

看看Numpy吧,它让生活轻松多了

from numpy import genfromtxt
import numpy as np

my_data = genfromtxt('my_file.csv', delimiter=',', dtype=str)

d = {}

for i in my_data:
    subset = i[1:] # create a subset to from index 1 to end
    subset[subset == ''] = '0' # change all empty spaces to zero
    d[i[0]] = np.sum(subset.astype(float))

使用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,则键的值将递增,否则我们将捕获错误并继续前进。在

输入:

^{pr2}$

输出:

^{3}$

相关问题 更多 >