我正在使用pandas和xlsxwriter在AWS Lambda中创建Excel报告。当创建大约60MB左右的Excel文件时,会发现磁盘空间填满,即使有512MB的可用磁盘空间也无法解决问题。
我一直在试图找出这是为什么,然后我发现了一个有希望的属性可以传递,即“constant_memory”,因此我尝试使用以下代码:
我该如何在使用pandas时将此属性传递给xlsxwriter而不会收到弃用警告,因为这似乎可以解决我的问题?
我一直在试图找出这是为什么,然后我发现了一个有希望的属性可以传递,即“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:
我在Stack Overflow上读了一篇帖子,我认为这篇帖子是xlsxwriter
作者提出的建议,在使用pandas时,该属性实际上并没有起作用。这在我的Excel报告中只显示第一列和最后一行的360000行数据,这似乎很明显。 我不清楚如何通过传递此属性来确保我的lambda函数完成操作,如果我不传递它,为什么我的lambda会耗尽磁盘空间?
第二个奇怪的事情是,pandas文档中根本没有提到任何名为options
的参数,如果我尝试使用engine_kwargs
传递constant_memory
,则会出现问题:
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, use engine_kwargs instead.
with pd.ExcelWriter(output, options={"in_memory": True}) as writer:
我该如何在使用pandas时将此属性传递给xlsxwriter而不会收到弃用警告,因为这似乎可以解决我的问题?
constant_memory
并没有解决我的问题,但是in_memory
却可以。感谢你指出了错误的语法,不确定我怎么会错过它。 - berimbolo