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

Python3使用pandas.DataFrame.sub()时报错str与float不支持减法运算

问题原因

你遇到的TypeError: unsupported operand type(s) for -: 'str' and 'float'报错核心和缺失值无关,是df1的部分列中混入了字符串类型的值,pandas无法对字符串和浮点数执行减法运算才触发报错。
你裁剪为5行样本能正常运行,是因为你选取的样本行刚好所有列都是数值类型,没有覆盖到全量数据中存在字符串的异常行。

排查步骤

  • 执行print(df1.dtypes)查看df1各列的数据类型,只要有列的dtype为object,就说明该列混有非数值类型的值。
  • 对所有object类型的列执行以下代码,即可定位到包含字符串的行:
# 替换为你要排查的列名
df1[target_col].apply(lambda x: type(x)).value_counts()

解决方案

你可以直接批量将df1的所有列转换为数值类型,无法转换的异常值自动转为NaN,后续再执行sub运算就会正常返回NaN不会中断:

# 方案1:读取csv时直接指定转换
df1 = pd.read_csv('df1.csv', dtype=float, errors='coerce')

# 方案2:读取后批量转换所有列
df1 = df1.apply(pd.to_numeric, errors='coerce')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:27:03