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

Pandas列含字符串引发运算报错:如何检查并删除字符串?

解决Pandas中TypeError: unsupported operand type(s) for -: 'str' and 'int'问题

这个错误原因很直接:你的value列里混合了字符串类型的数据,导致lambda函数尝试用字符串和整数32做减法时触发了类型不兼容的报错。下面分两步帮你搞定——先定位这些字符串,再处理掉它们:

第一步:检查哪些行包含字符串

首先,你可以快速筛选出所有带字符串的行,方便排查这些无效数据的来源:

# 筛选出value列是字符串的行
str_entries = frame[frame['value'].apply(lambda x: isinstance(x, str))]
print(str_entries)

如果想统计列内各数据类型的占比,也可以用这行代码:

print(frame['value'].apply(type).value_counts())

这里要注意:如果列里的字符串是数字格式(比如'86'这种),我们可以尝试把它们转成数值保留下来;如果是完全无效的字符串(比如'无数据'、'N/A'),直接删掉就行。

第二步:处理字符串数据

方案1:尝试将所有元素转为数值(推荐)

用pd.to_numeric工具,把能转成数值的字符串自动转成数字,无法转换的内容设为NaN,之后再删掉这些空值行:

# 转换列类型,无法转换的内容设为NaN
frame['value'] = pd.to_numeric(frame['value'], errors='coerce')
# 删除value列为空的行
frame = frame.dropna(subset=['value'])

这种方式既保留了可转换的数字字符串,又清理了无效数据,之后你的温度转换代码就能正常运行了。

方案2:直接删除所有含字符串的行

如果你确定不需要这些带字符串的行,也可以直接过滤掉:

# 只保留value列不是字符串的行
frame = frame[frame['value'].apply(lambda x: not isinstance(x, str))]

最后执行你的转换代码

处理完数据类型问题后,就可以运行温度转换的代码了。这里推荐用Pandas的向量运算代替apply,效率会比逐行处理高很多:

frame['value_c'] = (frame['value'] - 32) * 9/5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:15:06