列中只保留数字和小数点



我有一个包含字母和数字的字符串的列。这个数字有时有小数点,有时没有小数点。我想把这个数转换成浮点数。示例dataframe:

df = pd.DataFrame({'colA': ['q7.8', 'g5.3', '4.5r', 'john7']})

更新后的列应该包含:7.8, 5.3, 4.5 7.0 .

对于字母的数目和位置没有系统的规则。

感谢

假设每个单元格中只有一个数字,我们可以使用str.extract然后astype转换为float:

df['colA'] = df['colA'].str.extract(r'(d+(?:.d+)?)').astype('float')

在如何从字符串中提取浮点数中有许多正则表达式可用,如果需要额外的考虑,如幂运算或正负运算,如:

df['colA'] = df['colA'].str.extract(
    r'([-+]?(?:d+(?:.d*)?|.d+)(?:[eE][-+]?d+)?)'
).astype('float')

*注意,在这种方法中,extract只需要一个捕获组。

df:

   colA
0   7.8
1   5.3
2   4.5
3   7.0

最新更新