python - python - 如何在python中以内存和时间高效的方式将多个数据帧写入多个工作表?
问题描述
我有一个列表Dataframe
,我需要在不同工作表的 excel 文件中写入该列表。目前我正在使用下面的代码 -
dfs = [df1, df2, df3, df4]
sheets = ['sheet1', 'sheet2', 'sheet3', 'sheet4']
df_sheets = zip(dfs, sheets)
for df, sheet_name in df_sheets:
writer = pd.ExcelWriter('output.xlsx', engine='openpyxl', mode='a', if_sheet_exists='replace')
writer.book = openpyxl.load_workbook('output.xlsx')
writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
df.to_excel(writer, sheet_name, index=False)
writer.close()
现在这需要更多的时间和内存。我试图writer
在循环之前和循环writer.close()
之后移动启动。但是没有任何东西被写入excel文件。
解决方案
在循环之前移动writer
东西可以让它更快。
dfs = [df1, df2, df3, df4]
sheets = ['sheet1', 'sheet2', 'sheet3', 'sheet4']
df_sheets = zip(dfs, sheets)
writer = pd.ExcelWriter('output.xlsx', engine='openpyxl', mode='a', if_sheet_exists='replace')
writer.book = openpyxl.load_workbook('output.xlsx')
writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
for df, sheet_name in df_sheets:
df.to_excel(writer, sheet_name, index=False)
writer.close()
推荐阅读
- javascript - 如何在展开和关闭下拉引导程序时运行功能
- javascript - 将 Flatlist 数据显示到 Flatlist Props
- android - 在 Xamarin 应用程序中对 Android 组件进行单元测试
- google-cloud-firestore - Firestore 中的多租户
- python - django clean_field 没有读取表单域
- oracle - 复制oracle plsql包中的日志文件并用不同的名称保存
- python - 为什么我的 pycurl 没有针对 Openssl 编译?
- oracle - 使用 dbms_job.submit 提交了 Oracle 作业,但它失败了,但我不知道在哪里查找错误消息
- authorization - 我们如何从 NestJS 中的服务类访问装饰器
- node.js - pm2 安全使用 max_memory_restart 的方法