Pandas(Python)计算object列均值时报TypeError字符串拼接float错误怎么办
问题原因
你执行df['YearsCode'].astype(float)时没有将转换后的结果重新赋值给原列,该方法默认不会修改原数据,转换后df['YearsCode']仍然是object类型,混合了字符串和数值,计算均值时就会触发类型错误。
解决方案
核心逻辑
- 替换特殊字符串值后,将类型转换结果赋值回原列
- 计算均值时使用
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
相关产品推荐
相关产品推荐

