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

如何实现动态加载多CSV文件并返回数组的Python函数?

问题描述

我正在开发一个加载函数,用来加载每个仅包含单个pandas DataFrame(最好直接转成numpy数组)的CSV文件,把每个文件关联到对应的数组变量。函数的输入是一个字典,键是期望的变量名,值是CSV文件的路径/名称。

输入示例:

d = {'XLF' : 'X4_2_LF.csv', 'XHF' : 'X4_2_HF.csv',
     'yLF' : 'y4_4_LF.csv', 'yHF' : 'y4_4_HF.csv'}

我希望通过这个函数加载上述4个文件,返回对应的数组变量(比如XLF、XHF等),或者包含这些变量的单个字典。目前我能成功加载文件,但因为输入字典的元素数量不固定,不知道怎么正确返回结果。当前代码如下:

def load_data_dic(d):
    path = os.getcwd() + '\\results\\data\\'
    out = {}
    for key, val in d.items():
        nm = path + val
        locals()[key] = pd.read_csv(nm, index_col = 0).to_numpy()
    return out #don't know how to fill it!
解决方案

方案1:返回包含所有变量的字典(推荐)

这是最灵活的处理方式,不管输入字典有多少元素都能适配。你不需要用locals(),直接把加载后的数组存入out字典即可:

import os
import pandas as pd

def load_data_dic(d):
    # 用os.path.join拼接路径,适配不同系统的路径分隔符
    base_path = os.path.join(os.getcwd(), 'results', 'data')
    out = {}
    for key, filename in d.items():
        file_path = os.path.join(base_path, filename)
        # 加载CSV并转成numpy数组
        out[key] = pd.read_csv(file_path, index_col=0).to_numpy()
    return out

使用方式:

data_dict = load_data_dic(d)
# 通过键直接访问对应的数组
XLF = data_dict['XLF']
XHF = data_dict['XHF']

方案2:返回独立变量(按需使用)

如果一定要拿到单独的变量,可以用字典解包的方式,但这种方式依赖你明确知道输入的键名,灵活性不如字典:

# 先获取字典结果
data_dict = load_data_dic(d)
# 解包成独立变量
XLF, XHF, yLF, yHF = data_dict['XLF'], data_dict['XHF'], data_dict['yLF'], data_dict['yHF']

也可以用命名元组,既能通过属性访问变量,又能保持结构统一:

from collections import namedtuple

def load_data_dic(d):
    base_path = os.path.join(os.getcwd(), 'results', 'data')
    data = {}
    for key, filename in d.items():
        file_path = os.path.join(base_path, filename)
        data[key] = pd.read_csv(file_path, index_col=0).to_numpy()
    # 根据字典键创建命名元组类
    DataTuple = namedtuple('DataTuple', data.keys())
    return DataTuple(**data)

使用方式:

data = load_data_dic(d)
XLF = data.XLF
XHF = data.XHF

注意事项

  • 优先用os.path.join拼接路径,比直接字符串拼接更安全,能自动适配Windows、Linux等系统的路径分隔符。
  • 不要用locals()创建变量,这种方式不直观,而且函数内部的局部变量无法直接传递到外部,必须存入字典或其他容器才能返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 07:36:28