我有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':DataFrame,'filename2':DataFrame,...。'filename24':DataFrame}
感谢所有帮助!
答案 0 :(得分: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)