【发布时间】:2019-02-04 23:25:55
【问题描述】:
您好,我正在尝试将我的 df 转换为二进制并将其存储在变量中。
我的_df:
df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]})
我的代码:
import io
towrite = io.BytesIO()
df.to_excel(towrite) # write to BytesIO buffer
towrite.seek(0) # reset pointer
我收到AttributeError: '_io.BytesIO' object has no attribute 'write_cells'
完整追溯:
AttributeError Traceback (most recent call last)
<ipython-input-25-be6ee9d9ede6> in <module>()
1 towrite = io.BytesIO()
----> 2 df.to_excel(towrite) # write to BytesIO buffer
3 towrite.seek(0) # reset pointer
4 encoded = base64.b64encode(towrite.read()) #
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py in to_excel(self, excel_writer, sheet_name, na_rep, float_format, columns, header, index, index_label, startrow, startcol, engine, merge_cells, encoding, inf_rep, verbose, freeze_panes)
1422 formatter.write(excel_writer, sheet_name=sheet_name, startrow=startrow,
1423 startcol=startcol, freeze_panes=freeze_panes,
-> 1424 engine=engine)
1425
1426 def to_stata(self, fname, convert_dates=None, write_index=True,
C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\formats\excel.py in write(self, writer, sheet_name, startrow, startcol, freeze_panes, engine)
624
625 formatted_cells = self.get_formatted_cells()
--> 626 writer.write_cells(formatted_cells, sheet_name,
627 startrow=startrow, startcol=startcol,
628 freeze_panes=freeze_panes)
AttributeError: '_io.BytesIO' object has no attribute 'write_cells'
【问题讨论】:
-
我只是测试了你的代码,并且在 windows 下的 pandas 0.23.4 中运行良好。
-
jezrael,当我打印(towrite) 时它只打印
b''为什么不打印b'/x0/....'我需要返回二进制数据,我怎样才能得到它 -
@pyd - 我通过
df = pd.read_excel(towrite)对其进行测试,然后它返回DataFrame。也许一些python问题?我在 python 3.6 下测试它 -
我通过
towrite.getvalue()解决了它,感谢您的帮助@jezrael
标签: pandas binary pickle bytesio