清洗amount数组特殊字符:去除单引号并格式化小数
解决方案
直接通过清理特殊字符→转数值→保留两位小数的步骤就能解决问题,之前的代码问题在于单引号清理不彻底、多余的字符处理步骤干扰,以及未正确转换数值格式。
最简处理代码
import pandas as pd # 核心处理逻辑 df['amount'] = df['amount'].str.replace("'", "", regex=False) # 移除所有单引号 df['amount'] = df['amount'].astype(float).round(2) # 转浮点型并保留两位小数
完整示例(含模拟数据)
# 模拟你的数据场景 data = {'amount': ["'0.450000'", "'0.350000'", "'0.000000'", "1.234567'"]} df = pd.DataFrame(data) # 执行处理 df['amount'] = df['amount'].str.replace("'", "", regex=False).astype(float).round(2) print(df)
输出结果:
amount 0 0.45 1 0.35 2 0.00 3 1.23
关键说明
- 用
str.replace清理单引号:pandas的str方法是针对字符串列的元素级操作,比普通replace更可靠,能确保所有位置的单引号都被移除。 - 转浮点型+保留两位小数:
astype(float)将清理后的字符串转为数值,round(2)直接得到你需要的两位小数格式。如果需要以字符串形式显示两位小数(而非数值类型),可以改用:df['amount'] = df['amount'].str.replace("'", "", regex=False).astype(float).map(lambda x: f"{x:.2f}") - 过滤非法字符(可选):如果存在除单引号外的其他特殊字符,可以用正则提取仅保留数字和小数点:
df['amount'] = df['amount'].str.extract(r'(\d+\.\d+)', expand=False).astype(float).round(2)
内容的提问来源于stack exchange,提问作者luc
相关产品推荐
相关产品推荐

