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

2024-05-29 10:07:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有24个csv文件,当前位于文件夹目录中。目标是读取中的所有CSV文件,并将其存储为单个数据帧。在我的客户的要求下,他们希望我们所有的代码都是面向对象的编程。我是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':数据帧,'filename2':数据帧,…'filename24':数据帧}

我感谢所有的帮助


Tags: 文件csv数据path代码self文件夹目标
1条回答
网友
1楼 · 发布于 2024-05-29 10:07:35

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

相关问题 更多 >

    热门问题