如何在for循环中创建DataFrame并赋值给df1、df2等独立变量
解决方案
方法1:直接生成df1、df2等独立变量
可以通过Python内置的globals()全局命名空间字典实现循环内动态创建变量,完全满足按需生成、无多余变量的需求,修改后的参考代码如下:
import numpy as np import pandas as pd # 生成3-10之间的随机数作为循环次数 three_to_ten = np.random.randint(3,10) for x in range(three_to_ten): data = np.random.randint(three_to_ten, size=three_to_ten) df = pd.DataFrame(data, columns=['numbers']) # 动态生成df1、df2...变量并赋值 globals()[f'df{x+1}'] = df # 之后即可直接调用df1、df2等变量
该方案特点:
- 完全匹配你要的独立变量命名要求,可直接通过
df1、df2访问对应数据 - 缺点是动态生成的变量没有明确代码提示,数量较多时后续维护难度较高
方法2:更推荐的字典存储方案
工业场景下更推荐用字典收纳批量生成的DataFrame,不需要污染全局变量空间,管理和调用效率更高,参考代码如下:
import numpy as np import pandas as pd three_to_ten = np.random.randint(3,10) # 初始化空字典存储所有DataFrame df_store = {} for x in range(three_to_ten): data = np.random.randint(three_to_ten, size=three_to_ten) df = pd.DataFrame(data, columns=['numbers']) # 以df1、df2为key存入字典 df_store[f'df{x+1}'] = df # 调用方式:df_store['df1']、df_store['df2']
该方案优势:
- 所有DataFrame统一管理,不会生成冗余全局变量
- 可通过
df_store.keys()快速查看所有已生成的DataFrame标识 - 批量处理时可直接遍历字典,比零散的独立变量操作效率高很多
内容的提问来源于stack exchange,提问作者Henul
相关产品推荐
相关产品推荐

