如何从DataFrame列表中循环生成独立DataFrame,无需手动逐个赋值?
实现方案
首先说明:动态生成独立变量名的做法并不推荐,更建议用字典统一管理所有DataFrame,后续调用、批量处理都会更方便。两种实现方式如下:
方案1:推荐——字典存储(更易维护)
# 生成键为df1、df2...的字典,值对应列表里的DataFrame df_dict = {f"df{i+1}": df[i] for i in range(len(df))} # 后续调用示例 print(df_dict["df1"]) # 对应原列表里的第一个DataFrame print(df_dict["df2"]) # 对应原列表里的第二个DataFrame
这个方案不会污染全局命名空间,批量处理的时候直接遍历字典即可,不需要硬编码变量名。
方案2:直接生成全局独立变量
如果确实需要直接生成df1、df2这类可以直接调用的全局变量,可以借助globals()方法实现:
for i in range(len(df)): globals()[f"df{i+1}"] = df[i] # 执行后就可以直接调用df1、df2...dfn print(df1) print(df2)
原代码无法生效的原因
你之前写的代码无法达到预期主要有3个问题:
- 变量名
dfn是固定字符串,不会随着n的数值变化变成df1、df2,每次循环都会覆盖同一个变量 counter变量在循环里没有递增,永远停留在初始值0- 循环范围写的是
range(0,len(df)-1),会漏掉列表最后一个元素,不需要额外减1
内容的提问来源于stack exchange,提问作者Andi Osika
相关产品推荐
相关产品推荐

