我正在构建一个函数库,用于处理具有多个工作表的ExcelFiles,其中工作表的结构不一致。该过程的关键部分是构建一个名为workbook_structure的dict,它为每个工作表定义起始行,结束行和每个工作表的日期。然后将其与pd.ExcelFile.parse()
结合使用,以定义每个工作表中DataFrame的结构。
在连接每张表格中的DF之前,我会进行一些测试。
在执行此操作之前,我需要从ExcelFile对象解析每个工作表并存储每个数据框以进行测试。我的问题是,用于存储多个数据帧的最佳容器类型是什么?目前我正在使用字典。
我在一个名为workbook_iterator的类中创建了这个容器,如下所示:
class workbook_iterator:
def __init__(self, file_path, line_codes, workbook_structure):
"""
file_path : string
line_codes : DataFrame
workbook_structure : dict
Class for extracting data from ExcelFile object, performing tests on each
sheet and concatenating the multiple data frames and saving to csv.
"""
self.__wkbk_DF = pd.ExcelFile(file_path)
self.__line_codes = line_codes
self.__wkbk_struc = workbook_structure
self.All_DFs = {sheet : DataFrame() for sheet in self.__wkbk_DF.sheet_names}
for sheet in self.All_DFs.keys():
len_DF = len(self.__wkbk_DF.parse(sheet))
DF = self.__wkbk_DF.parse(sheet,
header = self.__wkbk_struc['start_rows'][sheet],
skip_footer = len_DF - self.__wkbk_struc['end_rows'][sheet],
parse_cols = self.__wkbk_struc['cols']
)
self.All_DFs[sheet] = DF
pass
这很好用,但是访问时类对象的All_DFs属性基本上打印出每个数据框(并且有数百张)。有没有更好的方法来存储多个DataFrame?
注意,line_codes参数在后续方法中使用,因此为了解决此问题,不需要了解其结构。