如何为浮点数保留至少3位数

时间:2018-01-06 12:13:48

标签: python python-2.7 pandas numpy

以下是先前研究中数据框的示例:

enter image description here

似乎输出数字的格式至少为3位数(例如1070,0.073)。现在,我只能在点

之后将原始浮点数转换为格式相同的数据
str("{:.3f}".format(df['values'])

因此,如何将原始数据转换为如上图所示的表格?

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:1)

您不能在浮点数的末尾添加零并仍然保持浮点数。您必须先将其表示更改为字符串。然后,计算位数并在末尾添加零。如果数字最初不包含小数,请不要忘记添加.

这导致以下小功能。要计算数字,我使用正则表达式,因此它需要re

import re

def padZero(value, target_width):
    result = str(value)
    numdigits = len(re.findall(r"\d", result))
    if numdigits < target_width:
        if value == int(value):
            result += '.'
        while numdigits < target_width:
            numdigits += 1
            result += '0'
    return result

这种通用算法可以用更加Pythonic的方式重写:

def padZero(value, target_width):
    result = str(value)
    if 'e' not in result:
        numdigits = sum(n.isdigit() for n in result)
        if numdigits < target_width:
            if value == int(value):
                result += '.'
            result += '0'*(target_width - numdigits)
    return result

https://stackoverflow.com/a/12717649的答案和评论中使用简洁的sum技巧,很好地消除了re的必要性,并使用字符串乘数来添加正确的{{1}个数字}第

在字符串表示中添加0的显式检查可以防止非常大或非常小的数字(例如e)出现奇怪的结果,在这种情况下会返回未更改的字符串。

1e20