如何估计熊猫时间序列中使用的数字的小数位数?
例如对于
x=[1.01,1.01,1.03]
我想要
in[0]: estimate_decimal_places(x)
out[0] : 2
例如对于
x=[1.1,1.5,2.0]
我想要
in[0]: estimate_decimal_places(x)
out[0] : 1
def estimate_decimal_places(num):
return len(str(num).split(".")[1])
x=[1.1,1.01,1.001]
for num in x:
print estimate_decimal_places(num)
给
1
2
3
真的很难看,但它有效,并且应该涵盖马克指出的极端情况
def decimal_places(num):
return max(len(('%.15f'%num).strip("0").split('.')[1]),0)
编辑:
这无论如何都会失败,例如decimal_places(90.34)
. 在我的机器上打印时它被转换为 90.340000000000003,然后这反过来又给出了错误的结果。
只要您不过度推动它,它就可以正常工作,12
例如接受无法预测数字以上的小数位,替换15
为12
以上