【问题标题】:Python Pandas: force to save a df in a csv numerical values with 4 digitsPython Pandas:强制将 df 保存为 4 位数的 csv 数值
【发布时间】:2018-12-01 04:52:15
【问题描述】:

我有一个带有浮点数的数据框,我想用相同的位数保存它。 这是我的数据框df

       1     0.917007  0.920562  0.922801  0.922745  0.917396  0.922445   
       2     0.914374  0.926690  0.914257  0.914607  0.914462  0.910307   
       3     0.919565  0.907405  0.916554  0.916463  0.919817  0.917184   
       4     0.912238  0.915469  0.900786  0.900752  0.912059  0.919894   
       5     0.906972  0.920995  0.918015  0.918200  0.908895  0.907092 

我正在保存它:

from pandas import ExcelWriter
writer = ExcelWriter('PythonExport.xlsx')
table.to_excel(writer,'aName',float_format='%11.4f')
writer.save()

但是当我打开文件时,我看到了这个:

如何强制为每个单元格保存的位数得到这个?:

编辑:尝试使用以下内容另存为 csv 文件时发生同样的情况

table.to_csv('PythonExport.csv', sep=',',float_format='%11.4f')

注意:我使用的是 python3

【问题讨论】:

  • 这是 excel 如何选择显示浮动的问题。您需要添加一些工作簿格式。见这里:stackoverflow.com/questions/44423036/…
  • 我刚刚编辑了我的问题,因为它不仅发生在 excel 中,还发生在 csv 文件中......
  • @diens 是否可以将列保存为str
  • 我不喜欢,因为我需要稍后做一些计算

标签: python pandas


【解决方案1】:

以下应该按照here 的描述工作

df.applymap('{:.4f}'.format).to_csv('PythonExport.csv')

要验证,请确保您在文本编辑器而不是 Excel 中打开 .csv

【讨论】:

  • 我正在使用 LibreOffice Calc 打开它,并且 .csv 文件在该程序中显示不正确,但在文本编辑器中显示是正确的,正如您所说。但我也尝试过table.applymap('{:.4f}'.format).to_excel(w...,它甚至可以使用 LibreOffice Calc 打开它。非常感谢!
  • 没问题。在进行浮点格式化之前,通过检查df.dtypes 的输出来检查您的列是否确实是浮点数。
【解决方案2】:

您需要创建格式,然后将其添加到需要添加的列中,这可能会对您有所帮助。

df.to_excel(writer, sheet_name='Sheet1')
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
format1 = workbook.add_format({'num_format': '0.0000'})
worksheet.set_column('B:B', None, format1)
writer.save()

更多信息:http://xlsxwriter.readthedocs.io/example_pandas_column_formats.html

【讨论】:

    猜你喜欢
    • 2018-05-31
    • 2017-03-13
    • 2020-01-09
    • 2021-02-13
    • 2020-02-10
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多