Pandas: to_excel() float_format

2020-03-03 08:14发布

I'm trying to get the float_format parameter working with pandas' to_excel() function, but it doesn't seem to do anything.

Code:

df = pd.DataFrame({
        'date':['1/15/2016','2/1/2016','2/15/2016','3/15/2016'],
        'numA':[1000,2000,3000,4000.3],
        'numB':[10000,20000.2,30000,40000]
    })

writer = pd.ExcelWriter('c:/.../pandas_excel_test.xlsx', engine = 'xlsxwriter')

print df.dtypes

df.to_excel(writer, 
        index = False,
        float_format = '%.2f',
    )

But the Excel file looks like this:

enter image description here

I confirmed dtypes as:

date     object
numA    float64
numB    float64
dtype: object

Does anyone know how to properly format floats in to_excel()?

1条回答
混吃等死
2楼-- · 2020-03-03 08:49

I believe Excel formatting changes how floats are displayed. I tried to_csv method and float_format worked. For excel, telling excel how to display the column helps:

df = pd.DataFrame({
        'date':['1/15/2016','2/1/2016','2/15/2016','3/15/2016'],
        'numA':[1000,2000,3000,4000.3],
        'numB':[10000,20000.2,30000,40000]
    })

writer = pd.ExcelWriter('c:/.../pandas_excel_test.xlsx', engine = 'xlsxwriter')
df.to_excel(writer, index=False, sheet_name='Sheet1')
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
format1 = workbook.add_format({'num_format': '0.00'})
worksheet.set_column('C:C', None, format1)  # Adds formatting to column C
writer.save()

Result:

Final excel result

More info: http://xlsxwriter.readthedocs.io/example_pandas_column_formats.html

查看更多
登录 后发表回答