def sumRows(filename, header=False):
d = {}
total = 0
with open ('{0}'.format(filename)) as csvfile:
rdr = csv.reader(csvfile)
for row in rdr:
if(header==True):
rdr.next()
# skips first row if header is set to true
continue
total = ?
# function I do not know how to do
d[row[0]] = total
print(d)
CSV文件示例:
bob 15 4 4
tim 29 0
anna 18 9
我需要它添加行,比如,对于bob它应该是15 + 4 + 4,时间应该是29 + 0并且它应该忽略任何空格,有没有人知道我怎么能在python 3中做到这一点?它应该以字典的形式打印
答案 0 :(得分:0)
如果您可以使用pandas,您可以按照以下步骤进行操作:
import pandas as pd
df = pd.read_csv('data.csv', header=None).set_index(0)
print(df.sum(axis = 1))
P.S。 read_csv
读取csv,默认为','作为分隔符。要使用sep
参数更改分隔符。
答案 1 :(得分:0)
您需要将文本单元格转换为数字,忽略空白单元格,然后sum
。
def sum_rows(filename, header=False):
d = {}
with open(filename) as csvfile:
rdr = csv.reader(csvfile, delimiter='\t')
if header:
rdr.next()
for row in rdr:
d[row[0]] = sum(int(s) for s in row[1:] if s.strip() != '')
return d
顺便说一句,您还应该将处理标题的代码移到循环之前;否则,它将在循环的每次迭代中运行它。