在python中求和并将总计附加到CSV文件

在python中求和并将总计附加到CSV文件,python,Python,我在csv文件中有以下数据: symbol,name,amount A,john,2 D,mary,6 E,bob,9 m,liz,-8 p,peter-2 我不熟悉编程和python,具体来说,如何在表的底部添加两个总和,一个显示正数的总和,另一个显示负数的总和。如果您处理的是csv文件,然后,您应该看看Python的模块,它有助于将每一行拆分为列列表。加载的每个条目都被视为字符串,因此您需要首先将3列(Python中编号为2,因为0是第一列)转换为整数 以下内容读取中的每一行,计算运行总计

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

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

我不熟悉编程和python,具体来说,如何在表的底部添加两个总和,一个显示正数的总和,另一个显示负数的总和。

如果您处理的是csv文件,然后,您应该看看Python的模块,它有助于将每一行拆分为列列表。加载的每个条目都被视为字符串,因此您需要首先将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)])
这将为您提供如下输出文件:

符号、名称、金额
A、 约翰,2岁
D、 玛丽,6岁
E、 鲍勃,9岁
m、 丽兹-8
p、 彼得-2
总数2,正总数17,负总数-10

对于这样简单的内容,您只需提取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))

欢迎来到StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布代码并准确描述问题之前,我们无法有效地帮助您。StackOverflow不是编码或教程服务。如果低于0或高于0,您可以进行一些循环。非常感谢Martin。我如何将“A”从总数中排除,并用“A”总数包含一个单独的行,然后在一个单独的文件中查找当前总数和类似总数之间的差异——假设一个文件名为星期一,第二个文件名为星期二。我已将其修改为单独计算
A
。对于额外的行,只需使用其on
writerow
写入每个条目即可。你应该试一试,如果你需要进一步的帮助,你可以开始一个新的问题。