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

Python如何计算CSV文件中指定列的浮点数总和

问题修正方案

原有代码的错误点

  • 代码开头没有导入csv模块,直接调用csv.reader会直接报错
  • 调用list(giftReader)之后,csv.reader迭代器已经被遍历耗尽,后续的for row in giftReader不会执行任何循环逻辑
  • csv.reader返回的每行是下标索引的列表,不是字典,不能用row['amount']的方式取值,要按列名取需要用csv.DictReader
  • 逻辑混淆了原始数据存储和求和逻辑,giftData一开始存了整个CSV的所有行,后续直接累加row['amount']到列表里,完全不符合求和的需求
  • 读取的amount值是字符串格式,还可能带有前后空格,需要先做清洗再转成浮点数才能计算总和

可运行的修正代码

import csv

total_amount = 0.0
# 用with语句自动管理文件关闭,避免资源泄漏
with open('input.v0.small.csv', 'r', encoding='utf-8') as giftFile:
    # 用DictReader直接把表头作为键,后续可以按列名取数
    giftReader = csv.DictReader(giftFile)
    giftData = list(giftReader)
    for row in giftData:
        # 兼容行缺失amount列、空值的异常场景
        if row.get('amount'):
            amount_str = row['amount'].strip()
            if amount_str:
                total_amount += float(amount_str)

# 匹配原代码的打印需求
print('row 0:' + str(list(giftData[0].keys())))
if len(giftData) >= 1:
    print("row 1's dollar value: " + giftData[0]['amount'].strip())

print(f'amount列合计值: {total_amount}')

运行结果说明

用你提供的CSV样例运行后,amount列合计值为103.27,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:45:03