将新数据添加到现有excel文件的更快方法?

问题描述 投票:2回答:1

我已经为输出值创建了一个熊猫数据框,并将其保存在几张纸上的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()
python python-3.x openpyxl
1个回答
0
投票

不要单独添加每个数据DF,请按表收集所有数据,并在一个步骤中添加它(也许是另一个循环,遍历工作表而不是新行)。

令人高兴的是,如果您只有简单的数据类型,则可以通过尝试导入到CSV作为中间步骤来简化逻辑,即使效率不高。

© www.soinside.com 2019 - 2024. All rights reserved.