Python 将字典转换为可以转换的浮动
我期待着创建一个功能,可以转换列表,我已经从CSV的导入到浮点数,其中的数字可以转换为浮点数 在一个CSV中,字典看起来像Python 将字典转换为可以转换的浮动,python,pandas,dictionary,Python,Pandas,Dictionary,我期待着创建一个功能,可以转换列表,我已经从CSV的导入到浮点数,其中的数字可以转换为浮点数 在一个CSV中,字典看起来像['a':'1','b':'1.1','c':'1.2'],在另一个CSV中,字典看起来像['1':'1','2':'1.2','3':'1.5'],它也可能是上述两个['1':'1','1','2':'1.4','UNKNOWN':'1.4'] 现在,这些都是使用pd.read\u csv(SheetAddress,header=None,index\u col=0,squ
['a':'1','b':'1.1','c':'1.2']
,在另一个CSV中,字典看起来像['1':'1','2':'1.2','3':'1.5']
,它也可能是上述两个['1':'1','1','2':'1.4','UNKNOWN':'1.4']
现在,这些都是使用pd.read\u csv(SheetAddress,header=None,index\u col=0,squence=True)导入的。to\u dict()
但是这会将它们全部保留为字符串。我试图编写一个函数来将这些转换为新字典,其中包含所有可以转换为浮点数的字符串,并将字符串保留为字符串
def DictToInt(DictionaryToConvert, New_Dictionary):
for Column1, Column2 in DictionaryToConvert.items():
if Column1.isdigit():
float(Column1)
elif Column2.isdigit():
float(Column2)
它几乎可以工作,它将我的字典转换为所有['1':'1','2':'1.2','3':'1.5']
类型字典的浮点数,但对于混合类型它不起作用。我还没有在['a':'1','b':'1.1','c':'1.2']
类型上测试它,因为它在混合类型上不起作用,但必须考虑到这一点来构建解决方案
为什么
['UNKNOWN':'1']
没有被转换成['UNKNOWN':1.0]
,我的循环中的逻辑是否不正确?这是这种解决方案的正确方法吗?这应该可以做到,数据
是您的原始字典,结果
--好吧,您猜对了=)
调用
float(Column1)
不会改变任何东西,您需要将其分配给某个对象。您试图实现什么?您想只将值转换为float还是同时将键和值转换为float?@Biarys我正在尝试将键和值转换为float,在那里它们可以被转换。@hoffee我认为float('1.2'))将返回1。2@Violatic它确实会返回它,但您不会将它分配给任何对象,因此它会丢失。除了
之外,这不是一个好主意,因为它可以捕获并忽略您不想看到的错误,例如键盘中断
和内存错误
,这些错误可以随时发生。我建议只捕获正确的异常,如ex我的目的是给出OP的主要思想,而没有超载的小细节对于显示初学者这不是一个好主意是非常重要的,所以在这个特定的场景中,我认为更重要的是捕获正确的异常。
def convert_to_float(num) :
try :
num = float(num)
except ValueError :
pass
return num
result = { convert_to_float(k) : convert_to_float(v) for k,v in data.items() }