XLSXWriter Pandas 导出截断或舍入数字
XLSXWriter Pandas Export Truncates or Rounds Numbers
我在使用 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_to_numbers': False} 解决了我的问题,如下所示。该列在 pandas 中实际上已经是一个字符串,但仍由 excel 编写器写入为数字,除非您设置此选项。我在完整解决方案的答案中包含了字符串转换。
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_to_numbers': False} 解决了我的问题,如下所示。该列在 pandas 中实际上已经是一个字符串,但除非您设置此选项,否则 excel 作者仍将其写入为数字。我在完整解决方案的答案中包含了字符串转换。
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()
我在使用 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_to_numbers': False} 解决了我的问题,如下所示。该列在 pandas 中实际上已经是一个字符串,但仍由 excel 编写器写入为数字,除非您设置此选项。我在完整解决方案的答案中包含了字符串转换。
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_to_numbers': False} 解决了我的问题,如下所示。该列在 pandas 中实际上已经是一个字符串,但除非您设置此选项,否则 excel 作者仍将其写入为数字。我在完整解决方案的答案中包含了字符串转换。
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()