我需要有关如何累计每天值的程序帮助。到目前为止看起来像这样

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
基本代码不是我的原始代码,对其进行了一些编辑以满足我的需要。

最佳答案

我使用了defaultdict来汇总您的valuedatas并命令其打印:

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]))


编辑:
要计算累计值:

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

        previous_values = []
        for key, value in OrderedDict(sorted(data.items())).items():
            print('{} {}'.format(key, value + sum(previous_values)))
            previous_values.append(value)


结果:


  1.5.2018 245
  
  2.5.2018 350
  
  4.5.2018 433

10-05 20:31
查看更多