【发布时间】:2019-04-21 04:27:49
【问题描述】:
这个程序几乎从数据文件中获取数据,分析它(负数 -> 0)并将所有内容保存到一个新文件中。
import csv
from collections import defaultdict
def convert(item):
try:
item = float(item)
if item < 0:
return 0
else:
return item
except ValueError:
return item
sums = defaultdict(list)
with open('Data.csv', 'r') as inp, open('output1.csv', 'w', newline = '') as outp:
reader = csv.reader(inp, delimiter = ';')
writer = csv.writer(outp, delimiter = ';', dialect = 'excel')
headers = next(reader)
for line in reader:
line = [convert(i) for i in line]
sums[line[1]+line[2]+line[3]+line[4]+line[5]+line[6]+line[7]+line[8]
].append(line[1])
writer.writerow(line)
for k,v in sums.items():
print(line[0], '{} total: {}'.format(k,sum(v)))
我想将每天的所有值添加到一行,所以它会是这样的:
1.1.2016 369416
2.1.2016 4825
...等等。到一个新的(或现有的输出)文件。 (所以在分析和修改负数后将数字相加为0)
可以直接完成,还是应该先使用列表来保存值?
我不能在最后添加“line[0]”,它不能正确打印日期,只打印最后一个日期。
数据文件可下载:https://files.fm/u/yuf4bbuk
前10行数据https://pastebin.com/9HxwcixZ
续 url/53355207
【问题讨论】:
-
你能把数据文件的粘贴部分复制到这里吗?或pastebin
标签: python excel python-3.x csv