2

我最近不得不获取一个数据框并准备将其输出到 Excel 文件。但是,我不想将其保存到本地系统,而是将准备好的数据传递给一个单独的函数,该函数基于 URI 保存到云中。在搜索了许多 ExcelWriter 示例后,我找不到我想要的东西。

目标是获取数据框,例如:

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

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

processed_data = <bytes representing the excel output>

答案中提供了我提出的解决方案,希望对其他人有所帮助。也希望看到其他人的解决方案!

更新 #2 - 示例用例

在我的例子中,我创建了一个 io 模块,它允许您使用 URI 来指定不同的云目的地。例如,以 gs:// 开头的“路径”被发送到 Google 存储(使用类似 gsutils 的语法)。我处理数据作为我的第一步,然后将处理后的数据传递给“保存”函数,该函数本身会过滤以确定正确的路径。

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

4

1 回答 1

2

与常见示例类似,但不是在 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()
于 2018-06-01T20:49:16.133 回答