将字符串转换为浮点数但数字中有多个点的问题

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