You need to enable JavaScript to run this app. 使用Python对CSV文件Profit/Losses列求和却返回0的问题排查
优惠活动
大模型
产品
解决方案
定价
更多

使用Python对CSV文件Profit/Losses列求和却返回0的问题排查

问题定位
  • 求和结果为0的核心原因是表头跳过语句的调用对象错误
  • 原代码使用next(csvfile, None)跳过表头,但操作的是原始打开的文件对象,而非csvreader的行迭代实例
  • 返回0的具体逻辑链:
    • Python的csv模块自带预读缓冲区机制,不会严格按照原始文件指针的位置逐行同步读取
    • 直接对原始文件对象调用next(),会和csvreader内部维护的行读取位置完全错位,最终导致csvreader迭代时拿不到任何有效数据行
    • sum()函数对空迭代器的默认返回值就是0,和你观测到的现象完全匹配
修正方法

将跳过表头的语句改为对csvreader实例调用next,让csvreader自身完成首行跳过,再逐行读取数据计算:

import os
import csv

# Path to collect data from the csv file in the Resources folder
pybank_csv = os.path.join("resources", "budget_data.csv")

with open(pybank_csv, 'r') as csvfile:       
   csvreader = csv.reader(csvfile, delimiter=',')
   # 修正点:将next()的参数从csvfile改为csvreader
   next(csvreader, None)    
   t = sum(float(row[1]) for row in csvreader)

   print(f"Total: {t}")
验证结果

使用你提供的样例数据计算,修正后Profit/Losses列的总求和值为4360090,不会再出现0的错误结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.14 05:15:06