如何删除float64值的额外数字?

时间:2017-12-29 20:02:03

标签: python rounding slice

我有一个数据框列。

P08107    3.658940e-11
P62979    4.817399e-05
P16401    7.784275e-05
Q96B49    7.784275e-05
Q15637    2.099078e-04
P31689    1.274387e-03
P62258    1.662718e-03
P07437    3.029516e-03
O00410    3.029516e-03
P23381    3.029516e-03
P27348    5.733834e-03
P29590    9.559550e-03
P25685    9.957186e-03
P09429    1.181282e-02
P62937    1.260040e-02
P11021    1.396807e-02
P31946    1.409311e-02
P19338    1.503901e-02
Q14974    2.213431e-02
P11142    2.402201e-02

我想留下一个小数并删除额外的数字,它看起来像

 3.7e-11

而不是

3.658940e-11
与所有其他人一起等等。

我知道如何切割字符串,但它似乎不适用于此。

2 个答案:

答案 0 :(得分:1)

如果你有一个pandas数据帧,你可以设置显示选项。

import pandas as pd
import numpy as np

pd.options.display.float_format = '{:.2f}'.format

pd.DataFrame(dict(randomvalues=np.random.random_sample((5,))))

返回:

   randomvalues
0          0.02
1          0.66
2          0.24
3          0.87
4          0.63

答案 1 :(得分:0)

您可以使用str.format

>>> '{:.2g}'.format(3.658940e-11)

'3.7e-11'

字符串切片在这里不起作用,因为它不会对值进行舍入:

>>> s = '3.658940e-11'
>>> s[:3] + 'e' + s.split('e')[1]

'3.6e-11'