给定一个 csv 文件
A,0,0,1,0
B,0,0,1,0
C,0,0,1,0
D,0,0,1,0
E,0,0,1,0
F,0,0,0,1
Run Code Online (Sandbox Code Playgroud)
我想计算每列的总数。有没有比以下更Pythonic或更有效的方法来做到这一点:
import csv
totals = [0]*4
for row in csv.reader(csvfile):
counts = [ int(x) for x in row[-4:] ]
totals = [ sum(x) for x in zip(counts, totals) ]
print(totals)
Run Code Online (Sandbox Code Playgroud)
预先转置 csv 文件,跳过当前标题列,只计算每行的总和
cr = zip(*csv.reader(csvfile))
next(cr)
result = [sum(map(int,x)) for x in cr]
print(result)
Run Code Online (Sandbox Code Playgroud)
[0,0,5,1]
不过,要小心,因为它在扩展 的参数时会将整个文件加载到内存中zip。