我可以将 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'
我正在尝试创建一个ExcelWriter
不调用对象pd.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
object?
Pandas 需要 ExcelWriter 构造函数的文件名路径,尽管每个编写器引擎都支持StringIO
。也许这应该作为 Pandas 中的错误/功能请求提出。
与此同时,这是一个使用 Pandas 的解决方法示例xlsxwriter
engine:
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()
Update:从 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')
如果您需要在 Pandas 之外使用输出(例如在 Django 或 Flask 中),请记住倒回 writer:output.seek(0)
.
也可以看看将 Dataframe 输出保存到字符串 http://xlsxwriter.readthedocs.io/working_with_pandas.html#saving-the-dataframe-output-to-a-string在 XlsxWriter 文档中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)