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

如何在for循环中保存多个带编号的DataFrame变量(如case1)

解决方法:用字典存储带编号的DataFrame

你的原代码存在几个问题:

  • 多层嵌套循环里的count循环完全多余,会重复执行相同的筛选操作并覆盖结果
  • case[m] = pd.DataFrame()这行逻辑错误,会试图给DataFrame赋值索引为m的元素为空DataFrame,大概率触发报错
  • 动态创建case1、case2这类变量不是最优方案,推荐用字典来统一管理,避免污染命名空间,同时更易批量操作

修正后的代码

import numpy as np
import pandas as pd  # 补充原代码遗漏的导入

# 初始化字典,用来存储所有筛选后的DataFrame
case_dict = {}
# 计数器,用于生成case1、case2...的编号
case_number = 1

# 遍历各筛选维度的组合
for i in range(0, 6):   
    for j in range(0, 6):
        for k in range(0, 4):
            for l in range(0, 10):
                # 执行数据筛选
                filtered_case = data[(data["CURRENT_ENERGY_RATING_Code"] == i) & 
                                    (data["PROPERTY_TYPE"] == j) & 
                                    (data["BUILT_FORM"] == k) & 
                                    (data["CONSTRUCTION_AGE_BAND"] == l)]
                # 将结果存入字典,键为带编号的名称
                case_dict[f'case{case_number}'] = filtered_case
                # 编号自增
                case_number += 1

如何使用存储的DataFrame

  • 访问单个结果:比如要查看第1个筛选结果,直接用case_dict['case1']
  • 遍历所有结果:
    for name, df in case_dict.items():
        print(f"查看{name}:")
        print(df.head())
    

可选优化:跳过空DataFrame

如果想只保留有数据的结果,可以在存入字典前加判断:

if not filtered_case.empty:
    case_dict[f'case{case_number}'] = filtered_case
    case_number += 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:15:34