从 python 中的文件夹读取 csv 文件时动态设置数据框名称

Dynamically setting dataframe name while reading csv files from a folder in python

我已经查找了答案,但并不满意。我不想将所有 csv 文件存储在字典中或附加到单个数据框中。

我有一个包含 10 个 csv 文件的文件夹。我希望每个 csv 文件都有一个单独的数据框。

我能够创建一个由表示文件名的键和表示其数据的值组成的字典,但我想将其进一步分解为单独的数据帧。

import pandas as pd
import numpy as np
import os 
import glob

path = r'C:\Users\.....\files'
csv_files = glob.glob(os.path.join(path_new, '*.csv'))
files_name = os.listdir(path_new)

d = {os.path.splitext(os.path.basename(f))[0] : pd.read_csv(f) for f in glob.glob(os.path.join(path, '*.csv'))} 

这会创建一个字典,我可以通过调用字典的键来访问单独的数据帧。

我通过定义一个读取 csv 的函数尝试了第二种方法:

def read_files(name, path_final):
    name = pd.read_csv(path_final)
    return name

for csvs in files_name:
    name = csvs.split('.')[0]
    path_final = os.path.join(path, csvs)
    read_files(name, path_final)

我尝试了第三种方法,但它也没有帮助:

for each_file in files_name:
    with open(os.path.join(path_new, each_file)) as f:
        each_file = pd.read_csv(f)
        print(each_file)

有没有办法动态创建单独的数据框?

到目前为止我参考了以下链接:

globals() returns 当前模块变量的字典。您可以通过在 globals():

上创建键来动态创建新变量,而不是在第一种方法中创建字典
for f in glob.glob(os.path.join(path, '*.csv'):
    variable_name = os.path.splitext(os.path.basename(f))[0]
    globals()[variable_name] = pd.read_csv(f)