gpt4 book ai didi

Python CSV - 需要对按另一列中的值分组的列中的值进行求和

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:50 26 4
gpt4 key购买 nike

我的 csv 中有数据需要解析。它看起来像:

Date, Name, Subject, SId, Mark
2/2/2013, Andy Cole, History, 216351, 98
2/2/2013, Andy Cole, Maths, 216351, 87
2/2/2013, Andy Cole, Science, 217387, 21
2/2/2013, Bryan Carr, Maths, 216757, 89
2/2/2013, Carl Jon, Botany, 218382, 78
2/2/2013, Bryan Carr, Biology, 216757, 27

我需要将 Sid 作为键,并使用该键对标记列中的所有值求和。输出将类似于:

Sid     Mark
216351 185
217387 21
216757 116
218382 78

我不必将输出写入文件。当我执行 python 文件时我只需要它。这是类似的question 。应该如何更改以跳过中间的列?

最佳答案

这就是直方图的概念。使用 collections 中的 defaultdict(int) 并迭代您的行。使用“Sid”值作为字典的键,并将“Mark”值添加到当前值。

int 类型的 defaultdict 确保如果键目前不存在,则其值将初始化为 0。

from collections import defaultdict

d = defaultdict(int)

with open("data.txt") as f:
for line in f:
tokens = [t.strip() for t in line.split(",")]
try:
sid = int(tokens[3])
mark = int(tokens[4])
except ValueError:
continue
d[sid] += mark

print d

输出:

defaultdict(<type 'int'>, {217387: 21, 216757: 116, 218382: 78, 216351: 185})

您可以将解析部分更改为其他任何内容(例如使用 csvreader 或执行其他验证)。这里的关键点是使用 defaultdict(int) 并像这样更新它:

d[sid] += mark

关于Python CSV - 需要对按另一列中的值分组的列中的值进行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17712405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com