如何在Python循环中创建独立的多个DataFrame对象?
生成独立编号的DataFrame对象
需求与问题
需求:从带有1-3编号的CSV文件中循环创建对应编号的独立DataFrame对象(未来文件数量可能变化)。
问题:当前代码将DataFrame存入字典,而非生成独立的命名对象,原代码如下:
import pandas as pd year = "2024" # 假设year已提前定义 district = 'districtname' if (district == 'districtname'): # setup df names in a dictionary dfs = {} # create a dictionary i = 1 while i <= 3: dfs[i] = "dfdistrictname" + str(i) i = i + 1 print(dfs) # create the DFs n = 1 while n <= 3: filename = 'oppdetail_oppview_' + year + '_' + district + str(n) + '.csv' print(filename) print(dfs[n]) dfs[n] = pd.read_csv(filename) n = n + 1
修改方案
方法1:动态创建独立命名的DataFrame对象
通过globals()字典直接在全局命名空间中生成指定名称的独立变量,比如dfdistrictname1、dfdistrictname2这类可直接调用的对象:
import pandas as pd year = "2024" # 确保year变量已定义 district = 'districtname' file_count = 3 # 未来文件数量变化时,修改这个数值即可 if district == 'districtname': for n in range(1, file_count + 1): filename = f'oppdetail_oppview_{year}_{district}{n}.csv' # 生成目标变量名 var_name = f'df{district}{n}' # 赋值创建独立DataFrame globals()[var_name] = pd.read_csv(filename) print(f"已创建独立DataFrame:{var_name}")
运行后即可直接使用dfdistrictname1、dfdistrictname2等变量操作对应的数据。
方法2:更易维护的替代方案(推荐)
动态生成独立变量虽然能满足需求,但后续代码中不易追踪维护(比如数量变化后需逐个修改引用)。更推荐保留字典存储,通过键名访问对应DataFrame,扩展性更强:
import pandas as pd year = "2024" district = 'districtname' file_count = 3 dfs = {} if district == 'districtname': for n in range(1, file_count + 1): filename = f'oppdetail_oppview_{year}_{district}{n}.csv' var_name = f'df{district}{n}' dfs[var_name] = pd.read_csv(filename) print(f"DataFrame已存入字典,键名:{var_name}") # 访问示例 print(dfs['dfdistrictname1'].head())
这种方式只需修改file_count即可适配文件数量变化,后续访问逻辑也更清晰。
内容的提问来源于stack exchange,提问作者Gerard De lapelin dumont
相关产品推荐
相关产品推荐

