如何将DataFrame中Amount列的452.91zero类值去除字符后转为float类型
Pandas DataFrame Amount列异常值处理方案
核心实现代码
data['Amount'] = data['Amount'].astype(str).str.replace('zero', '', regex=False).astype(float)
步骤说明
- 首先通过
astype(str)将整列统一转换为字符串类型,避免混合类型数据调用字符串方法时报错 - 调用
str.replace('zero', '', regex=False)将所有单元格中的zero子串直接替换为空,regex=False指定按普通文本匹配,不需要正则解析 - 最后调用
astype(float)将处理完成的纯数字字符串转换为浮点类型
结果校验
处理完成后可以通过以下代码确认原异常行(第15行,pandas默认索引从0开始,对应索引值为14)的结果是否符合预期:
print(data.loc[14, 'Amount'])
进阶兼容方案
如果后续还会出现其他非数字后缀的异常值,可以用正则匹配仅保留数字和小数点,适配更多异常场景:
data['Amount'] = data['Amount'].astype(str).str.replace(r'[^\d.]', '', regex=True).astype(float)
内容的提问来源于stack exchange,提问作者cmpunk
相关产品推荐
相关产品推荐

