我有一个包含字母和数字的字符串的列。这个数字有时有小数点,有时没有小数点。我想把这个数转换成浮点数。示例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