如何从文件夹中的.csv文件动态创建变量?

1wnzp6jl  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(131)

我有一个包含任意数量.csv文件的文件夹。现在我有三个目标:map1.csv、map2.csv和map3.csv。
我想将这些.csv文件的内容导入到一个 Dataframe 中,该 Dataframe 的名称与它们所来自的文件名相同。因此,文件夹###中map1.csv的内容需要位于名为map1(或map1.csv)的 Dataframe 中。
我知道动态创建变量不是最好的方法,但这正是我所需要的。所以如果有更好的方法来解决我的问题,我很乐意学习。
提前感谢:)
这是我尝试的:filenames显然包含文件的名称csv_files包含这些文件的路径count是文件夹中的文件数path是包含文件的文件夹的路径

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

path = askdirectory(title='Select Folder') # shows dialog box and return the path
count = int(len(fnmatch.filter(os.listdir(path), '*.*')))
filenames = os.listdir(path)
csv_files = glob.glob(os.path.join(path, "*.csv"))

for i in range(count):
    var_name = filenames[i]
    value = pd.read_csv(csv_files[i])
    globals()[var_name]= value

print(Map1.csv)
k3bvogb1

k3bvogb11#

Python字典是这里合适的数据结构:键是你的文件名,值是你创建的 Dataframe 。
还可以通过删除countfilenames(包括可能存在的任何非CSV文件)并仅使用csv_files来改进代码。
例如,从已经有csv_files的点开始:

df_dict = {}  # Create an empty dictionary

for csv_f in csv_files:
    fname = os.path.basename(csv_f)  # Just the filename without directory prefix
    df = pd.read_csv(csv_f)
    df_dict[fname] = df  # Add a dictionary entry where the key is <fname> and the value is <df>

print(df_dict['Map1.csv'])  # Get the value corresponding to a particular dictionary key

这绝对值得阅读更多并熟悉字典,因为它们是Python中的基本数据结构。您可以查看:https://realpython.com/python-dicts/

相关问题