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

如何快速从文件夹读取指定CSV并以文件名命名DataFrame

高效批量读取指定CSV文件并生成对应名称的DataFrame

原代码问题分析

你之前的代码无法运行主要有几个问题:

  • 未定义col_names变量,且循环中误用了col_name[i](少了复数后缀s)
  • 直接用字符串拼接路径容易出错,比如路径末尾没有斜杠时会导致文件路径格式错误
  • 通过索引循环创建变量的方式既不高效也不利于后续管理

推荐解决方案:用字典存储DataFrame(高效且易管理)

用字典存储是最优方案,键对应文件名(去掉.csv后缀),值对应读取后的DataFrame,既方便批量操作,也避免了大量独立变量导致的混乱。

import pandas as pd
from pathlib import Path

# 替换为你的实际文件夹路径
folder_path = Path("...")
# 指定需要读取的目标文件列表
target_files = ['a.csv', 'b.csv', 'c.csv', 'd.csv', 'e.csv']

# 初始化字典存储DataFrame
df_dict = {}
for file in target_files:
    # 用Path自动处理路径分隔符,避免拼接错误
    file_full_path = folder_path / file
    # 文件名去掉后缀作为字典的键
    df_name = file.rstrip('.csv')
    df_dict[df_name] = pd.read_csv(file_full_path)

使用时直接通过字典键访问对应DataFrame,比如df_dict['a']就能获取a.csv的数据。

若需生成独立全局变量(不推荐)

如果确实需要将每个DataFrame作为独立变量使用,可以借助globals()函数,但注意文件名不能包含空格、特殊字符等不符合变量命名规则的内容:

import pandas as pd
from pathlib import Path

folder_path = Path("...")
target_files = ['a.csv', 'b.csv', 'c.csv', 'd.csv', 'e.csv']

for file in target_files:
    file_full_path = folder_path / file
    df_name = file.rstrip('.csv')
    # 将DataFrame注册为全局变量
    globals()[df_name] = pd.read_csv(file_full_path)

之后直接用a、b等变量即可访问对应DataFrame。

进一步提升读取效率

如果目标CSV文件较多或单个文件较大,可以用多线程并行读取(IO密集型任务适合并行):

import pandas as pd
from pathlib import Path
from concurrent.futures import ThreadPoolExecutor

folder_path = Path("...")
target_files = ['a.csv', 'b.csv', 'c.csv', 'd.csv', 'e.csv']

# 定义单个文件读取函数
def load_csv(file):
    file_path = folder_path / file
    return file.rstrip('.csv'), pd.read_csv(file_path)

# 线程池并行读取
df_dict = {}
with ThreadPoolExecutor() as executor:
    # 批量提交任务并获取结果
    for df_name, df in executor.map(load_csv, target_files):
        df_dict[df_name] = df

并行读取能大幅缩短IO等待时间,适合处理大量文件的场景。

内容的提问来源于stack exchange,提问作者Data-7scientist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:30:59