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

通过循环读取CSV文件创建Pandas DataFrame并命名变量

批量读取CSV文件为命名DataFrame的问题

我有1987年至2008年的年度数据集,每个年份的数据都是.csv格式。想通过循环把每个文件读取为Pandas DataFrame,并且用去掉CSV扩展名的文件名来命名对应的DataFrame变量,避免手动逐个加载。

我尝试了这段代码,但卡在读取DataFrame和后续调用的环节:

flight_data = []
df_lists = []

for flights_file in glob.glob("../datasets/*.csv"):
    flight_data.append(flights_file)
    df_lists.append('df_'+flights_file.split("\")[-1][:-4:]) 

手动加载的方式是这样的,我想替换掉这种重复操作:

df_1988 = pd.read_csv("../datasets/1988.csv")
df_1990 = pd.read_csv("../datasets/1990.csv")
df_1991 = pd.read_csv("../datasets/1991.csv")
df_1992 = pd.read_csv("../datasets/1992.csv")

解决方案

方法1:用字典存储(推荐)

直接创建字典来管理所有DataFrame,键为目标变量名格式,值为对应DataFrame,这种方式清晰可控,便于后续调用和维护:

import pandas as pd
import glob

df_dict = {}
for file_path in glob.glob("../datasets/*.csv"):
    # 提取纯文件名(移除路径和.csv后缀)
    file_name = file_path.split("/")[-1].removesuffix(".csv")
    # 生成目标键名,比如df_1987
    df_key = f"df_{file_name}"
    # 读取文件并存入字典
    df_dict[df_key] = pd.read_csv(file_path)

后续调用时直接通过字典索引获取,例如df_dict["df_1987"]即可拿到对应年份的数据集。

方法2:动态创建全局变量(不推荐)

如果一定要生成独立的全局变量,可以借助globals()函数,但这种方式容易引发变量冲突,不利于代码维护:

import pandas as pd
import glob

for file_path in glob.glob("../datasets/*.csv"):
    file_name = file_path.split("/")[-1].removesuffix(".csv")
    var_name = f"df_{file_name}"
    # 动态创建全局变量
    globals()[var_name] = pd.read_csv(file_path)

运行后即可直接用df_1987、df_1988等变量名调用对应DataFrame。

问题补充说明

你之前的代码仅生成了变量名的字符串列表,但没有实际执行文件读取和DataFrame创建操作,这是导致后续调用失败的核心原因。上述两种方法均完成了读取文件+命名绑定的完整流程。

内容的提问来源于stack exchange,提问作者Yusuf Abdulganiyu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:20:28