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

如何用for循环或其他方法批量创建多个DataFrame?

批量创建DataFrame的优化方案

问题分析

你手动创建25个DataFrame的方式重复冗余,尝试的循环代码存在两个核心问题:

  • 错误试图动态生成变量名(a'i'这种写法在Python中不合法)
  • 循环嵌套逻辑混乱,多了不必要的range(25)循环,且索引调用错误(day[j]中j是字符串元素,不是索引)

正确实现方法

推荐使用字典存储批量生成的DataFrame,既便于管理,又避免动态变量名的弊端。结合itertools.product可高效生成所有筛选条件的组合:

步骤1:导入必要工具

import itertools
import pandas as pd

步骤2:生成所有条件组合并创建DataFrame字典

day = ['mon', 'tue', 'wed','thu','fri']
jjj = ['AA','BB','C3','FF','E0','DD']
kkk= ['3bit','2bit','4bit','8bit','16bit']

# 空字典存储结果
df_dict = {}

# 遍历所有day、jjj、kkk的组合
for d, j, k in itertools.product(day, jjj, kkk):
    # 筛选符合条件的行并转为float类型
    filtered_df = df[(df['ITEM'].str.contains(d)) & 
                     (df['ITEM'].str.contains(j)) & 
                     (df['ITEM'].str.contains(k))].astype(float)
    # 可选:仅保留非空的DataFrame,避免存储无效数据
    if not filtered_df.empty:
        # 用组合字符串作为字典键,方便后续调用
        df_dict[f"{d}_{j}_{k}"] = filtered_df

步骤3:调用生成的DataFrame

后续可通过字典键直接访问对应的DataFrame,例如:

# 获取mon_AA_3bit对应的DataFrame
target_df = df_dict['mon_AA_3bit']

额外优化建议

如果ITEM列格式固定(如day_jjj_xxx_xxx),可先拆分ITEM列生成新字段,再用groupby批量处理,效率更高:

# 拆分ITEM列提取day、jjj信息
df[['day_col', 'jjj_col', *_]] = df['ITEM'].str.split('_', n=2, expand=True)
# 正则提取bit类型信息
df['bit_col'] = df['ITEM'].str.extract(r'(\d+bit)')

# 按分组批量生成DataFrame并存入字典
df_dict = {}
for (d, j, k), group_df in df.groupby(['day_col', 'jjj_col', 'bit_col']):
    df_dict[f"{d}_{j}_{k}"] = group_df.astype(float)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:06:59