【问题标题】:Create a Class that creates a dictionary from reading in Multiple CSV Files - Python创建一个通过读取多个 CSV 文件创建字典的类 - Python
【发布时间】:2020-02-06 03:42:34
【问题描述】:

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

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

我已经有一个文件路径列表存储在一个名为 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}

感谢所有帮助!

【问题讨论】:

    标签: python pandas loops oop


    【解决方案1】:

    面向对象的示例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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-01
      • 2016-03-08
      • 2015-10-01
      • 2013-03-02
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      相关资源
      最近更新 更多