该程序几乎从“数据”文件中获取数据,对其进行分析(负数-> 0),然后将所有内容保存到新文件中。
ReportService/RunSavedQuery.php
我想每天将所有值添加到一行,所以就像:
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)))
...等到新的(或现有的输出)文件。 (因此,在将负数分析并将其修改为0后将数字相加)
可以直接完成,还是应该先使用列表保存值?
我不能最后添加“ line [0]”,它不能正确打印日期,只可以打印最后一个日期。
可以下载数据文件:https://files.fm/u/yuf4bbuk
数据的前10行https://pastebin.com/9HxwcixZ
从url / 53355207继续
答案 0 :(得分:2)
您不远了,但是应该代替package.json
,而应使用子字符串提取日期,从而根据第一列—host 0.0.0.0
计算密钥:
sums[line[1]+line[2]+line[3]+line[4]+line[5]+line[6]+line[7]+line[8]].append(line[1])
给予
line[0]
您也可以预先计算总和而不是添加到列表中,还可以打印累积值:
with open('solarData.csv', 'r') as inp, open('output.csv', 'w', newline = '') as outp:
reader = csv.reader(inp, delimiter = ';')
headers = next(reader)
for line in reader:
line = [convert(i) for i in line]
sums[line[0][:10]].append(line[1]+line[2]+line[3]+line[4]+line[5]+line[6]+line[7]+line[8])
writer = csv.writer(outp, delimiter = ';', dialect = 'excel')
for k, v in sums.items():
print('{} : {}'.format(k, sum(v)))
writer.writerow([k, sum(v)])