python - 将字典转换为可以转换的浮点数
问题描述
我正在寻找一个可以将我从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_csv(SheetAddress, header=None, index_col=0, squeeze=True).to_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]
,我的循环中的逻辑是否不正确?这是这种解决方案的正确方法吗?
解决方案
这应该可以解决问题,data
是您的原始字典,result
--嗯,您猜对了 =)
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() }
推荐阅读
- r - 考虑另一列中的变量,查找同一列中的不匹配
- python - 没有熊猫的排序字典
- javascript - 如何在 AG Grid Vue 中刷新固定的行数据
- android - 尝试调用虚拟方法 'void com.android.server.wm.DisplayContent.moveStack(com.android.server.wm.TaskStack, boolean)'
- angular - 带有 AWS Lambda Angular 8 的 HttpInterceptor
- amazon-web-services - 如何为 Lambda 通过 API 调用创建的 ECS 服务构建 CI CD 管道
- xamarin - 如何更改 Rg.Plugins 弹出模板以用 C# 编码
- java - 将 .csv 文件数据导入显示不完整信息的 java 表
- java - Android画布添加描边和高程
- java - IntelliJ Kotlin - 如何在项目中修复“确保您依赖 Kotlin 标准库”?