在python中求和并将总计附加到CSV文件
我在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是第一列)转换为整数 以下内容读取中的每一行,计算运行总计
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
。对于额外的行,只需使用其onwriterow
写入每个条目即可。你应该试一试,如果你需要进一步的帮助,你可以开始一个新的问题。