将字符串转换为浮点数但数字中有多个点的问题
Convert str into float but problems with multiple dots in numbers
我从 TCGA 数据库下载了这个数据文件,但我不确定如何在 python 中处理它。使用 pd.read_csv 导入后,我想将 reads_per_million_miRNA_mapped
列转换为浮点数,因为它们现在是字符串,但它给了我以下错误 can't be done because the dots.
ValueError: could not convert string to float: '1.024.089'
txt 文件如下所示:
miRNA_ID read_count reads_per_million_miRNA_mapped
hsa-mir-1227 1 0.204818
hsa-mir-1228 5 1.024.089
hsa-mir-1229 12 2.457.814
所以我想删除点,但后来你遇到了删除像逗号一样的点的问题,比如 0.204818
.
编辑:
我认为最好的解决方案是删除点,除非点后面有超过 3 个数字(因此 0.204818
是一个例外)。有人知道怎么做吗?
谢谢!
假设所有数字都是浮点数(即最后一个点作为小数点),您可以去掉除最后一个点以外的所有数字,然后转换为浮点数:
example = '1.024.089'
num = example.replace('.', '', example.count('.') - 1)
print(float(num))
输出:
1024.089
编辑:
要检查 last/only 点后是否有超过 3 个数字,你可以这样做:
i = num.index('.')
digits_after_dot = len(num[i+1:])
示例:
num = '12.12345'
i = num.index('.')
digits_after_dot = len(num[i+1:])
print(digits_after_dot)
输出:
5
我从 TCGA 数据库下载了这个数据文件,但我不确定如何在 python 中处理它。使用 pd.read_csv 导入后,我想将 reads_per_million_miRNA_mapped
列转换为浮点数,因为它们现在是字符串,但它给了我以下错误 can't be done because the dots.
ValueError: could not convert string to float: '1.024.089'
txt 文件如下所示:
miRNA_ID read_count reads_per_million_miRNA_mapped
hsa-mir-1227 1 0.204818
hsa-mir-1228 5 1.024.089
hsa-mir-1229 12 2.457.814
所以我想删除点,但后来你遇到了删除像逗号一样的点的问题,比如 0.204818
.
编辑:
我认为最好的解决方案是删除点,除非点后面有超过 3 个数字(因此 0.204818
是一个例外)。有人知道怎么做吗?
谢谢!
假设所有数字都是浮点数(即最后一个点作为小数点),您可以去掉除最后一个点以外的所有数字,然后转换为浮点数:
example = '1.024.089'
num = example.replace('.', '', example.count('.') - 1)
print(float(num))
输出:
1024.089
编辑:
要检查 last/only 点后是否有超过 3 个数字,你可以这样做:
i = num.index('.')
digits_after_dot = len(num[i+1:])
示例:
num = '12.12345'
i = num.index('.')
digits_after_dot = len(num[i+1:])
print(digits_after_dot)
输出:
5