嵌套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
相关产品推荐
相关产品推荐

