从列表中获取列总数

时间:2020-03-02 22:31:58

标签: python

我正在尝试从CSV文件的列表中获取特定列的总数。我可以选择列并删除标题,但是我不能将所有值加起来。

import csv

projectFile = open('data.csv')
projectReader = csv.reader(projectFile)
projectData = list(projectReader)
sum = 0
for amount in projectData[1:]:
    amount = amount[1]
    print(amount)

我尝试了sum(amount)无效的操作,然后尝试添加全局变量sum = 0,并将列表的float添加到其中,例如:{{1} },并出现错误。我不能为此使用熊猫或映射。

编辑:

CSV示例-

enter image description here

1 个答案:

答案 0 :(得分:2)

这是一个示例,该示例根据3x3矩阵(存储为列表列表)计算第三列的总和。请注意,列索引2对应于第三列:

col = 2
my_matrix = [[1,2,3],[4,5,6],[7,8,9]]
sum = sum([row[col] for row in my_matrix])
print(sum)

输出为:

18

(计算为3 + 6 + 9)

用于字符串矩阵(基于@mpstring的评论)

只需添加float()即可将每个字符串转换为float。

col = 2
mymat = [['1','2','3'],['4','5','6'],['7','8','9']]
sum = sum([float(row[col]) for row in mymat])
print(sum)

给出示例data.csv (基于@mpstring更新的问题)

import csv
projectFile = open('data.csv')
projectReader = csv.reader(projectFile)
next(projectReader)
projectData = list(projectReader)
sum = sum(float(row[1]) for row in projectData)
print(sum)

输出为

216.61