繁体   English   中英

创建一个 Class,它通过读取多个 CSV 文件来创建字典 - Python

[英]Create a Class that creates a dictionary from reading in Multiple CSV Files - Python

我有 24 个 csv 文件当前驻留在文件夹目录中。 目标是读取所有 CSV 文件并将它们存储为单独的 pandas 数据帧。 应我的客户的要求,他们希望我们所有的代码都在 Object 面向编程中。 我是 OOP 的新手,我将不胜感激。

我目前正在尝试创建一个 class ,它将读取我的文件并通过 for 循环将它们存储为字典。 键是文件名,值是 pandas dataframe

我已经有一个文件路径列表存储在一个名为 fns 的变量中

到目前为止,这就是我所拥有的代码,我试图找出循环逻辑,所以我不必每次都调用一个新的 class 实例。

fns = glob.glob(path + "*.csv")
enc = 'ISO-8859-1'

# create class

class MyFile:

    def __init__(self, file_path):
        self.file = file_path

    def ParseName(self):
        self.name_me = self.file.split('\\')[-1].strip('.csv')

    def Read_CSV(self):
        self.data_csv = pd.read_csv(self.file,delimiter='\t',
                                    low_memory=False, encoding= enc)

我的目标是得到这样的字典:

{'filename1': DataFrame, 'filename2': DataFrame, .... 'filename24': DataFrame}

我感谢所有的帮助!

面向对象的示例CsvStorage

import glob
import pandas as pd
from os.path import basename

class CsvStorage:

    _dfs = {}

    def __init__(self, path):
        for f in glob.glob(path):
            self._dfs[basename(f)] = pd.read_csv(f, encoding='ISO-8859-1')

    def get_dataframes(self):
        if not self._dfs:
            raise ValueError('No dataframes. Load data first')

        return self._dfs

files_path = '*/FILE_*.csv'   # adjust to your actual path pattern
csv_store = CsvStorage(files_path)
dfs = csv_store.get_dataframes()

print(dfs)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM