我是一个非常新手的Python用户,尝试在.csv文件中对数据列求和。我找到了其他的答案,这些答案真的帮助我开始了(例如,here和here)。
但是,我的问题是,我想循环遍历我的文件,以获取所有列的和。
我的格式化数据如下:
z y x w v u
a 0 8 7 6 0 5
b 0 0 5 4 0 3
c 0 2 3 4 0 3
d 0 6 7 8 0 9
或类似于.csv格式:
,z,y,x,w,v,u
a,0,8,7,6,0,5
b,0,0,5,4,0,3
c,0,2,3,4,0,3
d,0,6,7,8,0,9
现在,我只是想让迭代开始工作。我以后会担心总结的。这是我的代码:
import csv
data = file("test.csv", "r")
headerrow = data.next()
headerrow = headerrow.strip().split(",")
end = len(headerrow)
for i in range (1, end):
for row in csv.reader(data):
print row[i]
我得到的是:
>>>
0
0
0
0
>>>
因此,它为每一行打印索引1处的值,但不会继续通过其他索引。
我在这里遗漏了什么?
更新:
根据这些非常有用的建议和解释,我现在有了这个:
import csv
with open("test.csv") as data:
headerrow = next(data)
delim = "," if "," == headerrow[0] else " "
headerrow = filter(None, headerrow.rstrip().split(delim))
reader = csv.reader(data, delimiter=delim, skipinitialspace=True)
zipped = zip(*reader)
print zipped
strings = next(zipped)
print ([sum(map(int,col)) for col in zipped])
这将返回一个错误:
Traceback (most recent call last):
File "C:\Users\the hexarch\Desktop\remove_total_absences_test.py", line 9, in <module>
strings = next(zipped)
TypeError: list object is not an iterator
我不明白这个。。。?对不起的!
要创建将标题与colunm sums相匹配的dict,您可以这样做:
哪些输出:
我使用python3来完成以上所有操作,如果您使用python2,请替换为:
Python2代码:
输出:
如果你正在做很多这样的工作,那么熊猫尤其是pandas.read_csv可能是有用的,下面是一个非常基本的例子,一些熊猫大师可能会希望添加到其中:
您可以使用
numpy
:结果:
这可能会澄清一些到底发生了什么。。。看起来你把事情搞得有点复杂了。这是一个非常简单的Python,并不打算直接或最终解决您的问题,但更多的是帮助理解正在发生的事情。
此时,每个
row
将作为列表打印,例如['a','0','8','7','6','0','5']
所以每次循环中的迭代,我们都是逐行向下移动。
row[0]
将是第一列,row[1]
将是第二列,以此类推。如果要对文件的第三列求和,可以使用sumthree += int(row[2])
。最后,我们print sumthree
看到第三列中所有数字的总和。相关问题 更多 >
编程相关推荐