gpt4 book ai didi

python - 使用 Pandas Excelwriter 写入 StringIO 对象?

转载 作者:太空狗 更新时间:2023-10-29 17:53:54 29 4
gpt4 key购买 nike

我可以将 StringIO 对象传递给 pd.to_csv() 就好了:

io = StringIO.StringIO()
pd.DataFrame().to_csv(io)

但是在使用excel writer时,我遇到了很多麻烦。

io = StringIO.StringIO()
writer = pd.ExcelWriter(io)
pd.DataFrame().to_excel(writer,"sheet name")
writer.save()

返回一个

AttributeError: StringIO instance has no attribute 'rfind'

我试图在不调用 pd.ExcelWriter() 的情况下创建一个 ExcelWriter 对象,但我遇到了一些问题。到目前为止,这是我尝试过的:

from xlsxwriter.workbook import Workbook
writer = Workbook(io)
pd.DataFrame().to_excel(writer,"sheet name")
writer.save()

但现在我得到一个 AttributeError: 'Workbook' object has no attribute 'write_cells'

如何将 excel 格式的 pandas 数据框保存到 StringIO 对象?

最佳答案

Pandas 需要 ExcelWriter 构造函数的文件名路径,尽管每个编写器引擎都支持 StringIO。也许这应该作为 Pandas 中的错误/功能请求提出。

与此同时,这是一个使用 Pandas xlsxwriter 引擎的解决方法示例:

import pandas as pd
import StringIO

io = StringIO.StringIO()

# Use a temp filename to keep pandas happy.
writer = pd.ExcelWriter('temp.xlsx', engine='xlsxwriter')

# Set the filename/file handle in the xlsxwriter.workbook object.
writer.book.filename = io

# Write the data frame to the StringIO object.
pd.DataFrame().to_excel(writer, sheet_name='Sheet1')
writer.save()
xlsx_data = io.getvalue()

更新:从 Pandas 0.17 开始,现在可以更直接地执行此操作:

# Note, Python 2 example. For Python 3 use: output = io.BytesIO().
output = StringIO.StringIO()

# Use the StringIO object as the filehandle.
writer = pd.ExcelWriter(output, engine='xlsxwriter')

另见 Saving the Dataframe output to a string在 XlsxWriter 文档中。

关于python - 使用 Pandas Excelwriter 写入 StringIO 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28058563/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com