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

如何从文件夹中的CSV文件动态创建对应名称的DataFrame变量?

动态创建DataFrame变量及更优方案

一、实现动态创建同名变量(满足你的需求)

你的代码存在两处关键问题:

  1. count计算的是文件夹下所有文件的数量,而非仅CSV文件,循环时会出现索引越界
  2. 直接用print(Map1.csv)不符合Python语法,变量名包含.时需通过globals()引用,或者调整变量名去掉后缀

修正后的代码

方案1:保留完整文件名(含.csv)作为变量名

import pandas as pd
from tkinter.filedialog import askdirectory
import glob
import os

path = askdirectory(title='选择文件夹')
csv_files = glob.glob(os.path.join(path, "*.csv"))

for file_path in csv_files:
    file_name = os.path.basename(file_path)
    globals()[file_name] = pd.read_csv(file_path)

# 验证输出
print(globals()['map1.csv'])

方案2:去掉.csv后缀作为变量名(更符合Python命名习惯)

import pandas as pd
from tkinter.filedialog import askdirectory
import glob
import os

path = askdirectory(title='选择文件夹')
csv_files = glob.glob(os.path.join(path, "*.csv"))

for file_path in csv_files:
    # 提取无后缀的文件名
    file_name = os.path.splitext(os.path.basename(file_path))[0]
    globals()[file_name] = pd.read_csv(file_path)

# 验证输出
print(map1)

二、更优实践:用字典统一存储DataFrame

动态创建全局变量会污染命名空间,后续难以批量管理数据,推荐用字典存储所有DataFrame:

import pandas as pd
from tkinter.filedialog import askdirectory
import glob
import os

path = askdirectory(title='选择文件夹')
csv_files = glob.glob(os.path.join(path, "*.csv"))

df_dict = {}
for file_path in csv_files:
    # 可选:用带后缀的文件名当键,或去掉后缀
    file_name = os.path.splitext(os.path.basename(file_path))[0]
    df_dict[file_name] = pd.read_csv(file_path)

# 访问单个DataFrame
print(df_dict['map1'])

# 批量操作示例:遍历输出所有DataFrame的前5行
for name, df in df_dict.items():
    print(f"===== {name} 的前5行 =====")
    print(df.head())

这种方式的优势:

  • 避免全局命名空间混乱,变量更易追踪
  • 支持批量处理所有导入的数据(比如统一清洗、导出)
  • 可通过键名快速定位指定的DataFrame

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:22:40