在python中汇总并附加到CSV文件的总计

时间:2016-01-19 01:54:10

标签: python

我在csv文件中有以下数据:

symbol,name,amount
A,john,2
D,mary,6
E,bob,9
m,liz,-8
p,peter-2

我是编程和python的新手,我如何在表格的底部附加两个总和,一个显示正数的总和,另一个显示负数的总和。

2 个答案:

答案 0 :(得分:0)

如果你正在处理csv文件,那么你应该看一下Python的csv模块,它有助于将每一行拆分成一列列。加载的每个条目都被视为一个字符串,因此您需要首先将3列(在Python中编号为2,因为0是第一个)转换为整数。

以下内容读取每一行,计算运行总计并将每一行写入输出文件,添加包含总计的最后一行:

import csv

with open('input.csv', 'rb') as f_input, open('output.csv', 'wb') as f_output:
    csv_input = csv.reader(f_input)
    csv_output = csv.writer(f_output)

    header = next(csv_input)
    csv_output.writerow(header)

    sum_positive = sum_negative = sum_a = 0

    for cols in csv_input:
        csv_output.writerow(cols)
        value = int(cols[2])

        if cols[0] == 'A':
            sum_a += value
        if value >= 0:
            sum_positive += value
        else:
            sum_negative += value

    csv_output.writerow([
        "A total {}".format(sum_a),
        "Positive total {}".format(sum_positive), 
        "Negative total {}".format(sum_negative)])

这将为您提供如下输出文件:

symbol,name,amount
A,john,2
D,mary,6
E,bob,9
m,liz,-8
p,peter,-2
A total 2,Positive total 17,Negative total -10

答案 1 :(得分:0)

对于像这样简单的事情,您只需提取CSV文件中的最后一个值即可。

首先,找到值

plus, minus = 0
with open(fileName) as f:
    for l in f:
        v = int(l.strip('\n').split(',')[-1])
        if v >0 : plus += v else minus += v

然后,只需将值附加到文件...

with open(fileName, 'a') as f: 
    f.write('positive: %, negative: %d\n'%(plus, minus))