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

pandas读取Excel后float列带百分号如何移除并转换正确数值

解决方案

首先明确核心判断:你的TOT_SALES列数据类型是float64,属于纯数值列,值本身根本没有携带%字符,你看到的%是显示层渲染的效果,不是数据本身的内容,不要用字符串替换的方式处理,否则会直接触发类型错误。
从数值对应关系可以直接定位原因:

  • 源文件真实值:11.80 → DataFrame显示值:1180.00%
  • 本质是百分比格式的标准显示逻辑:将数值乘100后追加%后缀,和你观察到的现象完全吻合。

按以下步骤排查处理:

  • 第一步:先验证真实值,执行单行代码确认数值本身是否正确:
    print(df['TOT_SALES'].iloc[0])
    
  • 第二步:根据输出结果对应处理:
    • 如果输出是11.8:说明数值本身完全正确,只是pandas的浮点显示格式被全局设置为百分比模式,重置显示配置即可:
      pd.set_option('display.float_format', None)
      # 重新打印前5行验证显示效果
      print(df.head())
      
    • 如果输出是1180.0:说明Excel列的单元格百分比格式导致pandas读入时自动将数值放大了100倍,直接做数值缩放即可,不需要任何字符串操作:
      df['TOT_SALES'] = df['TOT_SALES'] / 100
      

避坑提示

不要对float类型的列直接使用.str.replace('%', '')类的字符串处理方法,数值类型没有.str访问器,执行会直接抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:54:16