首页 > 解决方案 > 将新数据添加到现有 Excel 文件的更快方法?

问题描述

我为输出值创建了一个熊猫数据框,并将其保存在几张纸上的 Excel 工作簿中。对于单次运行,计算和写入 excel 文件的时间和速度都很好。但是,当我尝试在 for 循环中运行此代码(至少 1000 次)时,在 excel 文件中写入新数据的时间会增加。那么,有没有更快的方法来写入新数据呢?

for _ in range(0,1000):
            # code
            df1 = pd.DataFrame({'': [_],'Pp': [pp], 'Qq': [qq], 'Pl': [pl], 'Ql': [ql]})
            df2 = pd.DataFrame({'MP': [i for i in mp]})
            df3 = pd.DataFrame({'MQ': [j for j in mq]})
            df4 = pd.DataFrame({'LP': [i for i in lp]})
            df5 = pd.DataFrame({'LQ': [j for j in lq]})
            writer = pd.ExcelWriter('data.xlsx', engine='openpyxl')
            writer.book = load_workbook('data.xlsx')
            writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
            reader = pd.read_excel(r'data.xlsx')
            df1.to_excel(writer, index=False, header=False, startrow=len(reader) + 1, sheet_name='Sheet1')
            df2.to_excel(writer, index=False, header=False, startcol=len(reader) + 1, sheet_name='Sheet2')
            df3.to_excel(writer, index=False, header=False, startcol=len(reader) + 1, sheet_name='Sheet3')
            df4.to_excel(writer, index=False, header=False, startcol=len(reader) + 1, sheet_name='Sheet4')
            df5.to_excel(writer, index=False, header=False, startcol=len(reader) + 1, sheet_name='Sheet5')
            writer.close()

标签: pythonpandasopenpyxl

解决方案


不要单独添加每个数据 DF,按表格收集所有内容并在一个步骤中添加它(可能是另一个循环遍历表格而不是新行)。

如果你只有简单的数据类型,你可以通过在尝试引入之前将其导出为 CSV 作为中间步骤来简化逻辑,即使它不是那么有效。


推荐阅读