python - 将新数据添加到现有 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()
解决方案
不要单独添加每个数据 DF,按表格收集所有内容并在一个步骤中添加它(可能是另一个循环遍历表格而不是新行)。
如果你只有简单的数据类型,你可以通过在尝试引入之前将其导出为 CSV 作为中间步骤来简化逻辑,即使它不是那么有效。
推荐阅读
- jsp - 将带有单选按钮值的多行传递到下一页
- android - 图片未显示在推送通知中
- sqlite - 从 SQLITE 中的两列中选择不同的值
- neo4j - 如何有效地计算 Cypher 中两个节点之间的所有路径?
- .net-core - GetChangeFeedProcessorBuilder 回调第一次为空更改
- rest - @PathVariable 给出 400 Bad Request
- android - 如何在Android中以编程方式停止使用电子邮件输入类型的edittext自动建议
- javascript - 带有asp.net mvc的完整日历不显示事件
- string - 我正在使用 Java 通过在我的代码中动态生成查询来从弹性搜索中获取一些记录。查询需要一个字符串
- sql - SQL上的条件减法