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

不使用pandas实现CSV按单列分组求和并覆盖原文件的方法

调整后完整实现代码

from csv import reader, writer

# 直接做分组累加计算,无需存储所有历史值
sum_index = {}
with open('event.csv', 'r', encoding='utf-8') as f:
    cr = reader(f)
    for row in cr:
        key = row[0]
        num = int(row[1])
        sum_index[key] = sum_index.get(key, 0) + num

# 覆盖写入原文件
with open('event.csv', 'w', encoding='utf-8', newline='') as csv_file:
    cw = writer(csv_file)
    for key, total in sum_index.items():
        cw.writerow([key, total])

调整说明

  • 补充了Python标准库csv的导入语句,不需要安装任何第三方依赖,完全符合不使用pandas、少用第三方库的要求
  • 把原来存储每个分组所有数值的列表改为直接累加数值,不需要留存历史数据,降低内存占用
  • 写入时直接输出每个分组的累加总和,替换原来取列表第一个元素的逻辑,实现分组求和需求
  • 移除了多余的close()调用,with语句会自动管理文件句柄的关闭

关于两次打开文件的说明

两次打开文件的操作是必要且合理的:因为要覆盖原文件,必须先读取完所有原始数据完成求和计算后,才能写入新的结果。如果在同一个文件打开操作中同时读写,会导致还没读取的原始数据被提前覆盖丢失,并不会提升效率反而会导致数据错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:06:07