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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:13:18