我正在尝试读取多个excel文件,每个文件都包含多个选项卡。我的代码可以工作,但是输出最终的数据帧需要很长时间。我如何优化我的代码,使我不等待30分钟得到最终产品?你知道吗
为了节省时间,我试图限制读取到循环中的表和文件。我知道以csv格式读取文件可以节省时间,但是,将excel文件转换为csv会使它只包含第一个选项卡。也许有一种方法可以将这些表格转换成csv并以这种方式阅读,但我不知道如何做到这一点。你知道吗
import pandas as pd
import glob
import numpy as np
invoicelist = glob.glob('*.xlsx')
invoicelist = pd.Series(invoicelist)
invoicelist1 = invoicelist[~invoicelist.str.contains('Analysis|Errors|M&T|MGMT|MT', case = False)]
invoice = pd.DataFrame()
for f in invoicelist1:
x = pd.ExcelFile(f)
sheets = x.sheet_names
sheets1 = pd.Series(sheets)
sheets1 = sheets1[~sheets1.str.contains('Summary|sheet', case = False)]
sheets2 = sheets1.tolist()
for sheet in sheets2:
newdf = x.parse(sheet)
newdf['Sheet'] = sheet
newdf['File'] = f
invoice = invoice.append(newdf, ignore_index = True)
就像我说的,代码工作并输出一个包含所有必要数据的数据帧。然而,这样做需要很长时间。我能做些什么来加速这个过程?你知道吗
我建议直接使用
pd.concat
和pd.read_excel
,如下所示:需要注意的是,您应该在上手之前知道表名的索引或名称。如果是这样,我建议采用暴力方法:
但同样,暴力是有效的,但表现不好,这否定了你的最终目标。你知道吗
相关问题 更多 >
编程相关推荐