为多个DataFrame创建容器

时间:2014-04-28 06:46:15

标签: python-2.7 pandas

我正在构建一个函数库,用于处理具有多个工作表的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参数在后续方法中使用,因此为了解决此问题,不需要了解其结构。

0 个答案:

没有答案