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

Python批量求和df变量报numpy.float64不可迭代错误如何解决

问题说明

需要对所有按df+数字序号规则命名的浮点变量求和,结果存入total变量,示例变量如下:

df1 = 272.6692725
df2 = 224.876735
df3 = 262.70736
df4 = 329.1992858333333
df5 = 542.3639916666667

使用如下代码尝试实现时抛出TypeError: 'numpy.float64' object is not iterable错误:

for x in range(0,300):
    x +=1
    total = sum(globals()[f"df{x}"])
错误原因
  • sum()的入参必须是可迭代对象(如列表、元组等),循环中每次取到的globals()[f"df{x}"]是单个浮点数,本身不可迭代,直接传入sum()会触发类型错误。
  • 循环中每次都对total重新赋值,即使不报错,最终total也只会保留最后一个df变量的值,无法得到累加结果。
解决方案

方案1:修正原有动态取变量的逻辑

先初始化累加初始值为0,循环取到每个df变量的值后直接累加即可,不需要套sum(),同时增加存在性判断避免变量缺失时报错:

total = 0
# 序号从1到300直接用range(1, 301)即可,不需要在循环内手动给x加1
for x in range(1, 301):
    var_name = f"df{x}"
    if var_name in globals():
        total += globals()[var_name]

方案2:推荐的规范写法

不建议在代码中大量使用globals()动态读取变量名,后续维护、调试成本极高,同类型数值从一开始就应该放在容器结构中统一管理:

# 所有同类值统一存入列表
df_values = [
    272.6692725,
    224.876735,
    262.70736,
    329.1992858333333,
    542.3639916666667,
    # 后续新增的同类值直接追加到列表中
]
total = sum(df_values)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:48:34