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

Pandas(Python)计算object列均值时报TypeError字符串拼接float错误怎么办

问题原因

你执行df['YearsCode'].astype(float)时没有将转换后的结果重新赋值给原列,该方法默认不会修改原数据,转换后df['YearsCode']仍然是object类型,混合了字符串和数值,计算均值时就会触发类型错误。

解决方案

核心逻辑

  1. 替换特殊字符串值后,将类型转换结果赋值回原列
  2. 计算均值时使用skipna=True自动跳过NaN值,无需将NaN替换为0,统计时仅计入有效非空样本,不会导致均值失真

完整可运行代码

# 查看列唯一值
df['YearsCode'].unique()

# 替换两个特殊字符串为数值
df['YearsCode'].replace('Less than 1 year', 0, inplace=True)
df['YearsCode'].replace('More than 50 years', 51, inplace=True)

# 转换为浮点型,必须赋值回原列才会生效
df['YearsCode'] = df['YearsCode'].astype(float)

# 计算均值,skipna=True自动跳过NaN,仅统计有效数值
years_code_mean = df['YearsCode'].mean(skipna=True)
print(years_code_mean)

更稳妥的兼容写法

如果担心列中还有其他未发现的异常字符串,可以用pd.to_numeric配合errors='coerce'自动将异常值转为NaN,避免转换报错:

df['YearsCode'] = pd.to_numeric(df['YearsCode'], errors='coerce')
years_code_mean = df['YearsCode'].mean(skipna=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:18:04