You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python删除CSV重复项并统计各ID的总价值

需求:统计CSV中每个ID的总Value值

原始CSV数据

IDValue
120
246
215
145
333
465
112
513
415

期望输出

ID numberTotal Value
177
261
333
480
513

现有代码的问题

你当前的代码逻辑只对比相邻的ID,没法处理同一ID分散在不同行的情况(比如ID=1出现在第1、4、7行);而且频繁打开关闭文件,不仅效率低,还容易导致数据写入异常;最重要的是,代码没有实现“累加同一ID所有Value”的核心需求,只是在合并相邻项或者单独输出单个值。

正确实现代码

import csv

# 用字典存储每个ID的累计Value
total_dict = {}

# 读取原始CSV文件
with open('原始文件.csv', 'r') as f:
    reader = csv.DictReader(f)
    for row in reader:
        # 处理单元格可能的空格,转换数据类型
        id_num = row['ID'].strip()
        value = int(row['Value'].strip())
        
        # 累加Value:ID已存在就加值,不存在就初始化
        if id_num in total_dict:
            total_dict[id_num] += value
        else:
            total_dict[id_num] = value

# 将统计结果写入新CSV
with open('./ID total value.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    # 写入表头
    writer.writerow(['ID number', 'Total Value'])
    # 按ID从小到大排序后写入(可选,让结果更规整)
    for id_num in sorted(total_dict.keys(), key=int):
        writer.writerow([id_num, total_dict[id_num]])

代码说明

  • 用字典total_dict来追踪每个ID的累计值,不管ID在原始文件中位置如何,都能正确累加所有对应的Value
  • 一次性完成读取和写入操作,避免频繁文件IO带来的问题
  • 加入strip()处理单元格的空格,确保数据转换不会出错
  • 可选的排序步骤,让输出结果按ID顺序排列,和你的期望格式一致

内容的提问来源于stack exchange,提问作者Akmal Aiman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:19:56