2015-07-21 213 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顯示浮動時應用的格式說明符。 –

相關問題