求和日数据值

2024-09-25 10:20:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助我的程序如何加上每天的价值观。目前看来是这样的

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
基本代码不是我原来的,编辑它有点符合我的需要


Tags: csvinimport程序convertforreaddata
1条回答
网友
1楼 · 发布于 2024-09-25 10:20:13

我使用defaultdict对valuedata求和并命令它打印:

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

相关问题 更多 >