Python XLSX输出截断或舍入数字

Python XLSX输出截断或舍入数字,python,pandas,xlsxwriter,Python,Pandas,Xlsxwriter,我无法使用xlsxwriter导出数据帧。包含很长数据库键整数的列将被截断并以科学表示法显示。如何设置pandas和xlsxwriter将整个数字通过数据帧传递给xlsxwriter,而不是给出截断的结果 我遇到问题的列是newdf['Record ID'],因此请帮助我调整下面的代码,以便整个数字都能通过 我尝试将其转换为字符串,但它在excel中仍然显示为科学记数法中的截断数字。我认为科学记数法很好,但我负担不起截断 output = io.BytesIO() writer

我无法使用xlsxwriter导出数据帧。包含很长数据库键整数的列将被截断并以科学表示法显示。如何设置pandas和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\'u to\'u 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()

我通过在excel writer中将选项设置为options={'strings\u 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()

整数是多少位?Excel对所有整数和浮点数据使用IEEE-754双浮点。一般精度为15位。要写更长的整数,必须将它们转换为数据帧中的字符串,从而将它们写为字符串。因此,这为我指明了正确的方向,但我必须设置字符串\u到\u数字设置才能使其正常工作。我只需要文本形式的数据。如果有人需要数字,他们是否可以在该列上运行单元格格式,以便在写入后将其转换为数字?