我已经为输出值创建了一个熊猫数据框,并将其保存在几张纸上的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()
不要单独添加每个数据DF,请按表收集所有数据,并在一个步骤中添加它(也许是另一个循环,遍历工作表而不是新行)。
令人高兴的是,如果您只有简单的数据类型,则可以通过尝试导入到CSV作为中间步骤来简化逻辑,即使效率不高。