在python中添加CSV文件中的行

时间:2014-11-26 23:16:25

标签: python csv

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中做到这一点?它应该以字典的形式打印

2 个答案:

答案 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

顺便说一句,您还应该将处理标题的代码移到循环之前;否则,它将在循环的每次迭代中运行它。