Pandas to_excel作为变量(没有目标文件)

时间:2018-06-01 20:49:16

标签: python excel pandas pandas.excelwriter

更新#1

这个问题与答案(见下文)一起创建,旨在为我在其他地方无法解决的问题提供解决方案。对于那些已经投票的人,我请你解释原因和/或提供替代答案。谢谢。

原始问题

我最近不得不采用数据帧并准备输出到Excel文件。但是,我并不想将其保存到本地系统,而是将准备好的数据传递给一个单独的函数,该函数根据URI保存到云端。在搜索了许多ExcelWriter示例后,我无法找到我要查找的内容。

目标是采用数据框,例如:

df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6})

暂时将其作为字节存储在变量中,例如:

processed_data = <bytes representing the excel output>

答案中提供了我想出的解决方案,希望能帮助其他人。很想看到别人&#39;解决方案也是如此!

更新#2 - 示例用例

就我而言,我创建了一个io模块,允许您使用URI指定不同的云目标。例如,&#34;路径&#34;从gs开始://发送到Google存储(使用类似gsutils的语法)。我处理数据作为我的第一步,然后将处理后的数据传递给&#34; save&#34;函数,它本身过滤以确定正确的路径。

df.to_csv()实际上没有路径,并自动返回一个字符串(至少在最近的版本中),所以这是我的解决方案,允许to_excel()做同样的事情。

1 个答案:

答案 0 :(得分:0)

与常见示例类似,但不是在ExcelWriter中指定文件,而是使用标准库的BytesIO存储在变量(processed_data)中:

from io import BytesIO

import pandas as pd


df = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6})

output = BytesIO()
writer = pd.ExcelWriter(output)
df.to_excel(writer)  # plus any **kwargs
writer.save()
processed_data = output.getvalue()