python - 创建一个类,通过读取多个 CSV 文件创建字典 - Python

标签 python pandas loops oop

我当前有 24 个 csv 文件位于文件夹目录中。目标是读取所有 CSV 文件并将它们存储为单独的 pandas 数据帧。应我的客户的要求,他们希望我们所有的代码都采用面向对象编程。我是 OOP 新手,希望得到任何帮助。

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

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

这就是到目前为止我所拥有的代码,我努力找出循环逻辑,这样我就不必每次都调用新的类实例。

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)

关于python - 创建一个类,通过读取多个 CSV 文件创建字典 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58293362/

相关文章:

Python重定向表单 Action

python - python中的破坏性操作?

python - 如何使用 Gensim doc2vec 执行高效查询?

C# - Lambda 与嵌套循环

python - python中的数据访问对象

python - 标记数据时出错。 C错误Pandas读取xlsx文件

python 3解决数据框问题

python - 将系列的值添加到数据框

javascript - 性能效率.... Javascript中的条件语句和逻辑表达式

node.js - 获取 "throw new Error(' 回调已被调用 .')"