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

如何从pandas DataFrame折扣列中提取纯数值并解决处理返回nan的问题

失效原因排查

之前的代码返回全nan主要有几个常见问题:

  • 列名大小写不匹配:原列名为Discount(首字母大写),如果代码中使用全小写的discount取列,会直接返回空值填充为nan
  • 字符串方法使用错误:lstrip/rstrip是按字符集合匹配而非完整字符串匹配,且删除%的方向完全错误;仅替换off没有处理%和中间的空格,也达不到效果
  • 列类型问题:如果Discount列不是字符串(object)类型,直接调用.str类方法会返回nan

可行解决方案

推荐方案:正则提取(稳定性最高)

不受多余字符干扰,直接匹配字符串中的连续数字,一步得到结果:

# 提取连续数字后转为整数类型
df['discount'] = df['Discount'].str.extract(r'(\d+)', expand=False).astype(int)

固定格式分割方案

如果确认所有值的格式严格为数字% off,也可以用拆分法实现:

# 按空格拆分取第一个元素,删除末尾百分号后转整数
df['discount'] = df['Discount'].str.split().str[0].str.rstrip('%').astype(int)

异常排查

如果执行后仍出现nan,可先执行以下操作排查基础问题:

  • 确认列名是否正确:执行print(df.columns)核对列名大小写
  • 强制转换列类型为字符串:执行df['Discount'] = df['Discount'].astype(str)后再运行处理代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:36:03