【问题标题】:Export Numbers to Excel Rounding Incorrectly [closed]将数字导出到 Excel 舍入错误 [关闭]
【发布时间】:2021-07-09 01:17:05
【问题描述】:

当我将数字从 Python 导出到 Excel 时,它们在 Excel 中被错误地四舍五入。例如,在 Python 中,数字是 5.49 (decimal.Decimal()),但是当我将它导出到 Excel 时,它会四舍五入为 5.5。我应该在我的代码中添加什么来防止这种情况发生?我希望它像在 Python 中一样显示 5.49。

【问题讨论】:

  • 请在此处以代码块的形式分享您的代码。
  • 您使用什么代码“导出”这些值?请将其添加到您的问题中。
  • Excel中是真的四舍五入,还是数字格式只设置了一位小数?
  • 请提供预期的minimal, reproducible example (MRE)。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。显示中间结果与您的预期不同的地方。

标签: python excel rounding


【解决方案1】:

“将数字从 python 导出到 excel”:虽然这听起来足够具体,但事实并非如此。它是否回答了以下任何问题?

  • 您使用哪个 python 库将数据从 python 导出到 excel?
  • 您如何评价 excel 将5.49 记录为5.5
    • 您是否将 Excel 数据保存为 .csv 文件以检查实际情况?
    • 您是否检查了excel应该四舍五入到后面的数字的小数位数? (⚠️ 很可能这就是你的情况

检查以下输出

使用文本编辑器而不是 MS Excel 打开两个文件(.csv 和 .xlsx)以检查实际情况)。

import pandas as pd

df = pd.DataFrame({'x': [10.0, 5.49, 0.904], 'expected': ['10.0', '5.49', '0.904']})
df.to_excel('output.xlsx')
df.to_csv('output.csv')

【讨论】:

    【解决方案2】:

    如果我们假设您在 pandas 中有一个数据框,并且您将其导出到 Excel 而不进行四舍五入。您可以从 python 格式化您的工作簿,如下所示:

    writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')
    df.to_excel(writer, sheet_name='Sheet1')
    workbook  = writer.book
    worksheet = writer.sheets['Sheet1']
    format1 = workbook.add_format({'column_name': '#.##'})
    # Set the format of your column but not the column width.
    worksheet.set_column('A:A', None, format1)
    writer.save()
    

    您可以在此链接here 阅读更多内容。 here的学分

    【讨论】:

      猜你喜欢
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 2020-04-27
      • 2016-07-12
      相关资源
      最近更新 更多