XLSXWriter熊猫导出截断或四舍五入数字

时间:2018-12-31 18:06:08

标签: python pandas xlsxwriter

我无法使用xlsxwriter导出数据框。具有非常长的数据库键整数的列将被截断并以科学计数法显示。如何设置熊猫和xlsxwriter将整个数字通过数据框传递给xlsxwriter,而不是给出截断的结果?

我遇到麻烦的列是newdf ['Record ID'],所以请帮助我调整下面的代码,以便整个数字都可以通过。

我尝试将其转换为字符串,但在Excel中它仍然以科学计数形式的截断数字显示。我认为科学记数法还不错,但是我无法承受这种截断。

    output = io.BytesIO()
    writer = pd.ExcelWriter(output, engine='xlsxwriter')
    newdf.to_excel(writer, sheet_name='NewDF Sheet')
    writer.save()
    resp = make_response(output.getvalue())
    resp.headers["Content-Disposition"] = "attachment; filename=output.xlsx"
    resp.headers["Content-Type"] = "application/vnd.ms-excel"

上面的代码在flask应用程序中运行,并将数据帧导出到xlsx文件。数据框包含应导出整数的newdf ['Record ID']列,但仅导出前几个数字,结尾显示为零。这也以科学计数法表示出来。

更新:我通过在excel writer中将选项设置为options = {'strings_to_numbers':False}解决了我的问题,如下所示。该列实际上已经是pandas中的字符串,但是除非您设置此选项,否则excelwriter仍将其写为数字。我将字符串转换包含在我的答案中以获取完整的解决方案。

writer = pd.ExcelWriter(output, engine='xlsxwriter', options={'strings_to_numbers': False})
newdf['Record ID'] = newdf['Record ID'].astype('str')
newdf.to_excel(writer, sheet_name='NewDF Sheet', index=False)
writer.save()

1 个答案:

答案 0 :(得分:0)

我通过在excel writer中将选项设置为options = {'strings_to_numbers':False}解决了我的问题,如下所示。该列实际上已经是pandas中的字符串,但是除非您设置此选项,否则excelwriter仍将其写为数字。我在答案中包括了字符串转换,以寻求完整的解决方案。

writer = pd.ExcelWriter(output, engine='xlsxwriter', options={'strings_to_numbers': False})
newdf['Record ID'] = newdf['Record ID'].astype('str')
newdf.to_excel(writer, sheet_name='NewDF Sheet', index=False)
writer.save()
相关问题