如何在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
相关产品推荐
相关产品推荐

