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

嵌套for循环构建DataFrame异常:仅生成最后一组数据,如何解决?

问题分析与解决方案

我一眼就看到你代码里的两个核心问题,导致最后只输出了最后一组数据:


1. 每次循环都覆盖了data列表

你写的data = [{'carbon_flow': ...}]是重新赋值整个列表,而不是把新数据追加进去。每一轮循环都会把之前存的所有数据丢掉,最后自然只剩最后一次循环生成的字典。

应该改成用data.append(...)来添加新数据,这样每一轮的结果都会保留在列表里。

2. 临时创建的DataFrame没有保存

你在循环里写了pd.DataFrame(data),但没有把这个DataFrame赋值给任何变量,相当于创建了就扔了,完全没用到。正确的做法是等所有数据都收集完,再一次性创建完整的DataFrame。

另外,你代码里还有个小笔误:CFS = carbon_share()之后,字典里用了RES,这会导致变量未定义的错误,应该改成CFS。


修正后的完整代码

import pandas as pd

# 假设这是你的carbon_share函数,示例返回0.5
def carbon_share():
    return 0.5

data = []
for carbon_flow in range(0, 1000, 100):
    for non_carbon_flow in range(100, 1000, 100):
        CFS = carbon_share()
        # 用append追加,而不是覆盖data
        data.append({
            'carbon_flow': carbon_flow,
            'non_carbon_flow': non_carbon_flow,
            'carbon Share': CFS
        })

# 所有数据收集完成后,再创建DataFrame
df = pd.DataFrame(data)
print(df)

更简洁的写法(列表推导式)

如果你的逻辑不复杂,用列表推导式可以让代码更紧凑:

import pandas as pd

def carbon_share():
    return 0.5

data = [
    {
        'carbon_flow': cf,
        'non_carbon_flow': ncf,
        'carbon Share': carbon_share()
    }
    for cf in range(0, 1000, 100)
    for ncf in range(100, 1000, 100)
]

df = pd.DataFrame(data)
print(df)

这样运行后,你就能得到包含所有循环组合的完整DataFrame了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:57:57