[英]Suppressing scientific notation in pandas?
我在 pandas 中有一個 DataFrame,其中一些數字以科學記數法(或指數記數法)表示,如下所示:
id value
id 1.00 -4.22e-01
value -0.42 1.00e+00
percent -0.72 1.00e-01
played 0.03 -4.35e-02
money -0.22 3.37e-01
other NaN NaN
sy -0.03 2.19e-04
sz -0.33 3.83e-01
快速臨時: df.round(4)
全局: pd.options.display.float_format = '{:20,.2f}'.format
您的數據可能是object
數據類型。 這是您數據的直接復制/粘貼。 read_csv
將其解釋為正確的 dtype。 您通常應該只在類似字符串的字段上使用object
dtype。
In [5]: df = read_csv(StringIO(data),sep='\s+')
In [6]: df
Out[6]:
id value
id 1.00 -0.422000
value -0.42 1.000000
percent -0.72 0.100000
played 0.03 -0.043500
money -0.22 0.337000
other NaN NaN
sy -0.03 0.000219
sz -0.33 0.383000
檢查您的數據類型是否為object
In [7]: df.dtypes
Out[7]:
id float64
value float64
dtype: object
這將此幀轉換為object
dtype(注意現在打印很有趣)
In [8]: df.astype(object)
Out[8]:
id value
id 1 -0.422
value -0.42 1
percent -0.72 0.1
played 0.03 -0.0435
money -0.22 0.337
other NaN NaN
sy -0.03 0.000219
sz -0.33 0.383
這是如何將它轉換回來( astype(float)
)在這里也有效
In [9]: df.astype(object).convert_objects()
Out[9]:
id value
id 1.00 -0.422000
value -0.42 1.000000
percent -0.72 0.100000
played 0.03 -0.043500
money -0.22 0.337000
other NaN NaN
sy -0.03 0.000219
sz -0.33 0.383000
這就是object
dtype 框架的樣子
In [10]: df.astype(object).dtypes
Out[10]:
id object
value object
dtype: object
如果您想將值用作列表中的格式化字符串,例如作為 csvfile csv.writier 的一部分,則可以在創建列表之前對數字進行格式化:
df['label'].apply(lambda x: '%.17f' % x).values.tolist()
試試這個,它只會為大值和非常小的值提供科學記數法(並添加千位分隔符,除非你省略“,”):
pd.set_option('display.float_format', lambda x: '%,g' % x)
或者要在不損失精度的情況下幾乎完全抑制科學記數法,請嘗試以下操作:
pd.set_option('display.float_format', str)
無需四舍五入的快速修復:
pd.options.display.float_format = '{:.0f}'.format
我嘗試了所有選項,例如
但沒有什么對我有用。
所以在將變量\/值(var1)分配給變量(比如num1)時,我使用了round(val,5)。
這是一種粗略的方法,因為您必須在每個作業中使用此輪函數。 但這可以確保您控制它的發生方式並獲得您想要的。"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.