问题描述
您好,我正在尝试将我的 df 转换为二进制并将其存储在变量中.
Hi I am trying to convert my df to binary and store it in a variable.
我的_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' 对象没有属性 '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:ProgramDataAnaconda3libsite-packagespandascoreframe.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:ProgramDataAnaconda3libsite-packagespandasioformatsexcel.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'
推荐答案
我通过将 pandas 升级到新版本解决了这个问题.
I solved the issue by upgrading pandas to newer version.
import io towrite = io.BytesIO() df.to_excel(towrite) # write to BytesIO buffer towrite.seek(0) print(towrite) b'' print(type(towrite)) _io.BytesIO
如果您想查看类似字节的对象,请使用 getvalue,
if you want to see the bytes-like object use getvalue,
print(towrite.getvalue()) b'PKx03x04x14x00x00x00x08x00x00x00!x00<xb