You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

清洗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

关键说明

  1. 用str.replace清理单引号:pandas的str方法是针对字符串列的元素级操作,比普通replace更可靠,能确保所有位置的单引号都被移除。
  2. 转浮点型+保留两位小数:astype(float)将清理后的字符串转为数值,round(2)直接得到你需要的两位小数格式。如果需要以字符串形式显示两位小数(而非数值类型),可以改用:
    df['amount'] = df['amount'].str.replace("'", "", regex=False).astype(float).map(lambda x: f"{x:.2f}")
    
  3. 过滤非法字符(可选):如果存在除单引号外的其他特殊字符,可以用正则提取仅保留数字和小数点:
    df['amount'] = df['amount'].str.extract(r'(\d+\.\d+)', expand=False).astype(float).round(2)
    

内容的提问来源于stack exchange,提问作者luc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:01:05