我需要在程序上获取有关如何累计每天值的帮助。到目前为止看起来像这样
import csv
def convert(data):
try:
return int(data)
except ValueError:
return 0
with open('MonthData1.csv', 'r') as file1:
read_file = csv.reader(file1, delimiter = ';')
delheader = next(read_file)
for line in read_file:
valuedata = max(0,sum([convert(i) for i in line[1:5]]))
print(line[0], valuedata)
目前,它应将3个项目值相加:
1.5.2018 15:00 150
1.5.2018 20:00 95
2.5.2018 18:00 105
4.5.2018 17:00 78
4.5.2018 20:00 0
4.5.2018 20:00 9
但是我希望它对同一天的所有值求和,所以会是这样:
1.5.2018 245
2.5.2018 105
4.5.2018 87
该如何执行?希望能有所帮助。以下是此中使用的所有数据的粘贴框:https://pastebin.com/Tw4aYdPc
基本代码最初不是我的,请对其进行一些编辑以满足我的需求。
答案 0 :(得分:1)
我用psql
对您的valuedata求和并命令打印:
defaultdict
编辑: 要计算累积值:
import csv
from collections import defaultdict, OrderedDict
def convert(data):
try:
return int(data)
except ValueError:
return 0
with open('MonthData1.csv', 'r') as file1:
read_file = csv.reader(file1, delimiter=';')
delheader = next(read_file)
data = defaultdict(int)
for line in read_file:
valuedata = max(0, sum([convert(i) for i in line[1:5]]))
data[line[0].split()[0]] += valuedata
for key in OrderedDict(sorted(data.items())):
print('{} {}'.format(key, data[key]))
结果:
1.5.2018 245
2.5.2018 350
4.5.2018 433