从 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)
有没有办法动态创建单独的数据框?
到目前为止我参考了以下链接:
- Get separate dataframes from a dictionary of dataframes Python
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)
我已经查找了答案,但并不满意。我不想将所有 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)
有没有办法动态创建单独的数据框?
到目前为止我参考了以下链接:
- Get separate dataframes from a dictionary of dataframes Python
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)