2015-05-28 2 views
2

Меня очень часто обманывают очень маленькие значения поплавка в пандах, которые «фактически равны нулю».Показать маленькие цифры как ноль

Например, это трудно понять, на первый взгляд, что происходит со следующим Series:

are_they_zero 
a -5.960464e-08 # This number is small 
b -2.384186e+07 # This one isn't 
c 2.384186e-07 
d -5.960464e+08 
e 8.940697e-08 

Есть ли способ сказать панд, чтобы показать номера, как 5.960464e-08 как 0?

(Очевидно, что это будет зависеть от приложения, чтобы ли это хорошая идея или нет, но предполагают, что в моем случае, это.)

+1

Предполагая, что вы используете IPython, есть '% точность 'magic – JohnE

+0

@JohnE Я: можете ли вы расширить это в ответ и привести пример? – LondonRob

+0

На самом деле, я просто играл с ним и, возможно, не так полезен с пандами. Он будет работать, только если вы печатаете индивидуальное значение, но не при печати нескольких значений (серия, массив, dataframe). Во всяком случае, просто введите '? Precision' в подсказке, чтобы узнать больше об этом. – JohnE

ответ

5

Вы можете использовать set_option с 'display.chop_threshold', чтобы справиться с этим:

In [20]: 
pd.set_option('display.chop_threshold', 0.001) 
df 

Out[20]: 
    are_they_zero 
a    0 
b -2.384186e+07 
c    0 
d -5.960464e+08 
e    0 
+0

Это ТОЧНО, что я искал – LondonRob

+0

Ничего страшного, я не был уверен, что это существовало или нет, поэтому я подумал, что посмотрю на это, и он действительно существует и сделал то, что вы хотели – EdChum

0

Вы могли бы сделать использование build in round() как это, как представляется, поплавок.

В качестве альтернативы, пытаясь чек, как (псевдо)

if c < 2.3e-05: 
    c = 0 
Смежные вопросы