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

如何在Python中批量创建子DataFrame并执行重复操作?

无需重复编写100次代码!批量处理DataFrame的简便方法

你完全不需要重复编写100次相同代码,用字典存储子DataFrame是更高效、更易维护的方案,同时避免了globals()带来的命名空间混乱问题。

为什么不推荐用globals()创建变量?

直接生成df1到df100这类全局变量会污染命名空间,后续难以批量操作这些变量(比如遍历、统一修改),还容易引发命名冲突或调试困难。

方案1:用字典统一存储并批量处理

步骤1:批量创建子DataFrame并存入字典

import pandas as pd

# 假设原始df已定义
sub_dfs = {}
for i in range(1, 101):
    # 生成子集并以'df1'、'df2'...为键存入字典
    sub_dfs[f'df{i}'] = df.iloc[i:10*i, i:20*i]

步骤2:批量处理所有子DataFrame

可以单独遍历字典处理,也可以和创建步骤合并:

processed_dfs = {}
for name, df_sub in sub_dfs.items():
    # 从键名中提取数字作为列名(比如'df1'提取'1')
    col_name = name.split('df')[1]
    # 执行堆叠和转换操作
    stacked_data = df_sub.stack()
    processed_dfs[name] = pd.DataFrame(stacked_data, columns=[col_name])

合并创建与处理的简化写法

如果不需要保留未处理的子集,可以直接在一个循环内完成:

processed_dfs = {}
for i in range(1, 101):
    # 创建子集
    df_sub = df.iloc[i:10*i, i:20*i]
    # 处理并存入字典
    processed_dfs[f'df{i}'] = pd.DataFrame(df_sub.stack(), columns=[str(i)])

如何访问单个处理后的DataFrame?

通过字典的键直接调用即可:

# 获取处理后的df1
df1_processed = processed_dfs['df1']
# 获取处理后的df50
df50_processed = processed_dfs['df50']

(不推荐)如果一定要生成独立变量

如果出于特殊需求必须得到df1到df100这类独立变量,可以将字典内容导入局部命名空间,但不建议长期使用这种方式:

locals().update(processed_dfs)
# 之后直接使用df1、df2等变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:05:22