Pandas 使用 XLSX Writer - Constant Memory\In Memory

问题描述

我正在使用 pandas 和 xlsxwriter 在 AWS lambda 中创建 excel 报告。我遇到了一个问题,即创建 60MB 区域内相当大的 excel 文件时磁盘空间已满,但有 512MB 的可用磁盘空间。

我一直试图弄清楚发生这种情况的原因和原因,但我发现了一个看起来很有希望的属性,我可以通过 constant_memory,所以我使用以下代码进行了尝试:

with pd.ExcelWriter(output,options={"constant_memory": True}) as writer:

这似乎确实确保了我的 lambda 始终如一地运行完成,如果我将其删除,则它不再执行,但问题是我收到以下警告:

FutureWarning: Use of **kwargs is deprecated,use engine_kwargs instead.
    with pd.ExcelWriter(output,options={"constant_memory": True}) as writer:

然后我读了一篇关于 SO 的帖子,我认为是 xlsxwriter 的作者暗示这个属性在使用 Pandas 时实际上不起作用。这一点很明显,因为我只得到了 excel 报告中的第一列和 360000 行的最后一行。我很困惑如何通过它来确保我的 lambda 完成0?为什么如果我不通过它,那么我的 lambda 就会耗尽磁盘空间?

第二个奇怪的事情是大熊猫的文档根本没有提到任何名为 options 的参数,如果我尝试使用 constant_memory 传递 engine_kwargs

with pd.ExcelWriter(output,engine_kwargs={'constant_memory': True}) as writer:

我收到以下错误

TypeError: __init__() got an unexpected keyword argument 'constant_memory'

我希望对 xlsxwriter 比较熟悉的人可以帮助我理解这几点。

xlsxwriter 的文档还提到了一个属性 in_memory,它似乎可以解决我的问题,但我无法将其传递给 pd.ExcelWriter

TypeError: __init__() got an unexpected keyword argument 'in_memory'

**编辑:传递 in_memory 确实解决了我遇到的问题,但我收到了一个弃用警告,使用 kwargs options 传递它。

with pd.ExcelWriter(output,options={"in_memory": True}) as writer:

FutureWarning: Use of **kwargs is deprecated,options={"in_memory": True}) as writer:

如何使用 Pandas 将此属性传递给 xlsxwriter 而不会收到弃用警告,因为它似乎解决了我的问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)