以下是先前研究中数据框的示例:
似乎输出数字的格式至少为3位数(例如1070,0.073)。现在,我只能在点
之后将原始浮点数转换为格式相同的数据str("{:.3f}".format(df['values'])
因此,如何将原始数据转换为如上图所示的表格?
任何建议都将不胜感激!
答案 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