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

如何用Pandas动态将CSV文件以文件名作为变量名导入?

动态导入CSV文件并以文件名作为变量名的解决方案

你之前的代码无法运行的核心原因是:Python不允许将表达式(比如os.path.basename(csv_files[0]).split(".")[0])放在赋值语句的左侧,赋值左侧必须是合法的变量名。下面提供两种可行的动态处理方案:

方案一:用字典统一管理(推荐)

用字典存储所有导入的DataFrame,以文件名(不含后缀)作为键,既满足需求又便于后续管理,避免全局变量混乱:

import glob
import os
import pandas as pd

path = r"C:\Users\Desktop\sync\work\all_csvs"
# 用os.path.join拼接路径,适配不同系统的路径分隔符
csv_files = glob.glob(os.path.join(path, "*.csv"))
colname = ['time', 'var_1', 'var_2', 'var_3', 'var_4', 'var_5'] 

csv_data = {}
for file_path in csv_files:
    # 提取不带后缀的文件名
    file_name = os.path.basename(file_path).split(".")[0]
    # 将DataFrame存入字典
    csv_data[file_name] = pd.read_csv(file_path, names=colname, header=None)

# 调用示例:访问a_1对应的DataFrame
# print(csv_data['a_1'])

方案二:动态创建全局变量

如果你确实需要直接用a_1、b_2这类变量名访问,可以通过globals()函数动态创建全局变量,但不推荐大量使用,容易导致变量污染:

import glob
import os
import pandas as pd

path = r"C:\Users\Desktop\sync\work\all_csvs"
csv_files = glob.glob(os.path.join(path, "*.csv"))
colname = ['time', 'var_1', 'var_2', 'var_3', 'var_4', 'var_5'] 

for file_path in csv_files:
    file_name = os.path.basename(file_path).split(".")[0]
    # 动态创建全局变量
    globals()[file_name] = pd.read_csv(file_path, names=colname, header=None)

# 调用示例:直接使用变量名访问
# print(a_1.head())

注意事项

  • 优先选择字典方案,后续遍历、修改、删除所有导入的数据都会更便捷;
  • 如果文件名中包含Python不允许的变量名字符(比如空格、特殊符号),需要先对文件名做清洗处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:54:22