我在csv文件中有以下数据:
symbol,name,amount
A,john,2
D,mary,6
E,bob,9
m,liz,-8
p,peter-2
我是编程和python的新手,我如何在表格的底部附加两个总和,一个显示正数的总和,另一个显示负数的总和。
答案 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))