2015-07-21 45 views
-3

以下计算结果为true:为什么string.format()的结果是一个字符串,即使是数字?

'{:.2f}'.format(2.0) > '{:.2f}'.format(10.0) 

我想写一些使用dataframe.to_excel两位小数(2为2.00)到excel,但它被显示为文本,而不是在一个单元格的数字。

更新:

import pandas as pd 

data_table = [[1.0,2.0,3.0],[4.0,5.0,6.0]] 
dataframe = pd.DataFrame(data_table) 

writer = pd.ExcelWriter(fileName, engine='xlsxwriter') 
dataframe.to_excel(writer,float_format='%11.2f', index=False) 
writer.save() 

它仍然显示6,而不是6.00。也许当我打开它

1 2 3 
4 5 6 
+1

你为什么期望'str.format()'产生除字符串以外的任何东西?即使如此,如果舍入数字(限于2位小数)与未被占用的对应数字相比有什么不同?如果您需要近似平等,请使用'round()'函数。 –

+0

Excel具有格式化选项,使用这些选项可以更改数字显示方式。将浮点格式化为字符串在Excel单元格中确实不起作用。 –

+0

如上所述,'str.format()'产生一个字符串。原始数字未格式化 - 这就是格式化数字以字符串形式存储的原因。此外,Excel不会自动检测单元格内容,将格式化的“数字”转换为Excel格式设置后的数字? – TigerhawkT3

回答

0

使用 int()上你的结果优于剥去0。

为什么String.format返回一个字符串?它不检查它是否是一个数字,它只应用于字符串。

编辑:

当然,你要在所产生的Excel文件格式可见。

用途:

Dataframe.to_excel(excel_writer, float_format=float_format, **kwargs) 

而** kwargs是你的其他参数和float_format是您的格式。

这将正确数字的格式在Excel中,如果将它们保存为数字

+0

将格式化的字符串转换为整数将丢弃所有格式。 – TigerhawkT3

+0

@ decontamin4t0R我更新我的问题。我不知道为什么'float_format ='%11.2f''不起作用 – Jack

1

to_excel有float_format选项。

+0

链接的文档说该选项是“浮点数的格式字符串”。听起来就像会产生一个字符串,不是吗? – TigerhawkT3

+0

不,它会告诉Excel显示浮动时应用的格式说明符。 –

相关问题