46

By default the numerical values in data frame are stored up to 6 decimals only. How do I get the full precision.

For example
34.98774564765 is stored as 34.987746. I do want the full value.

and 0.00000565 is stored as 0.

Apart from applying formats to each data frame is there any global setting that helps preserving the precision.

1
  • Can you post a reproducible example? Commented Apr 4, 2017 at 21:23

3 Answers 3

96

No, 34.98774564765 is merely being printed by default with six decimal places:

>>> pandas.DataFrame([34.98774564765])
           0
0  34.987746

The data itself has more precision:

>>> pandas.DataFrame([34.98774564765])[0].data[0]
34.98774564765

You can change the default used for printing frames by altering pandas.options.display.precision.

For example:

>>> pandas.set_option("display.precision", 8)
>>> pandas.DataFrame([34.98774564765])
                0
0  34.98774564765
Sign up to request clarification or add additional context in comments.

6 Comments

Just what I was looking for - thank you. df.round(10) did not work and all other format functions did not work, too. This was perfect & simple.
This option will sometimes print things in scientific notation. Use the display.precision option from the other answer if you need uniform outputs
It seems to me that astype is also affected, so that column.astype(str)[0] will be truncated
I've solved it by doing c.astype(np.float64).astype(str), otherwise a direct conversion from float32 to string seems to do a kind of "display" conversion and truncates the number
@Eric Burel … if your data is float32 then it will only have around 7 significant digits of precision. Upcasting it to float64 won’t have added any real information at all
|
50

You can also use the 'display.float_format' option

with pd.option_context('display.float_format', '{:0.20f}'.format):
    print(pd.DataFrame([34.98774564765]))

                        0
0 34.98774564765000150146

1 Comment

this one might be better when you want to avoid the scientific format
12

Your data is stored with the precision, corresponding to your dtype (np.float16, np.float32, np.float64).

pd.options.display.precision - allows you to change the precision for printing the data

1 Comment

how do i set this in a context manager?

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.