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

Pandas循环处理数据时如何去除Amount列单元格引号并解决数值解析报错

问题原因
  • 你写的for循环不会实际修改DataFrame中的值:循环中拿到的cell是原始值的副本,修改后没有回写到DataFrame对应位置
  • 金额列包含$符号,即便去掉双引号,带$的字符串也无法直接转为float类型,这是报错的核心原因
最优解决方案

优先推荐读取CSV时直接完成清洗,减少后续处理步骤:

方案1:读取CSV时直接处理(性能最优)

通过pd.read_csv的converters参数定义清洗规则,一步完成清洗+类型转换:

# 定义通用金额清洗函数
def clean_amount(amt_str):
    # 先后去除双引号、$符号后转浮点型
    return float(amt_str.strip('"').lstrip('$'))

for f in files:
    print(f)
    df = pd.read_csv(f, header = None, nrows=1)
    print(df)
    je = df.iloc[0,1]
    # 传入converters参数自动处理Amount列
    df2 = pd.read_csv(f, header = 6, converters={'Amount': clean_amount})
    df2.to_excel(w, sheet_name = je, index = False)

方案2:已读入DataFrame后的批量处理

如果数据已经读入内存,用pandas向量化str方法处理,完全避免低效的for循环:

# 链式操作批量去除双引号、$符号后转数值类型
df2['Amount'] = pd.to_numeric(df2['Amount'].str.strip('"').str.lstrip('$'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:30:02