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

为何计算字符串类型整数的Series均值时得到错误浮点数?

为啥字符串类型的Series算均值会出问题?

先看你遇到的场景对应的代码:

import pandas as pd

# 存字符串数字的Series
s_str = pd.Series(["1", "2"])
print(s_str.mean())  # 你得到了6.0,不是预期的1.5

# 存普通数字的Series
s_num = pd.Series([1, 2])
print(s_num.mean())  # 正常输出1.5

问题根源很直接:

  • 当Series里是正经的整数/浮点数时,mean()就是按算术平均逻辑计算,结果符合预期。
  • 但如果是字符串类型的数字,pandas根本不会把它们当成数字处理!
    • 对于常规的object类型字符串,pandas会调用numpy的计算逻辑,去算每个字符串字符的Unicode码点平均值。比如"1"的码点是49,"2"是50,平均应该是49.5;你得到6.0,大概率是实际数据里的字符串对应的码点平均为6(比如不小心用了特殊字符,或是输入错了元素值)。
    • 要是用了pandas专门的StringDtype(dtype="string"),调用mean()会直接报错,因为字符串类型本身不支持算术均值计算。

要得到正确的均值,得先把字符串转成数值类型:

# 直接转成int类型
s_str.astype(int).mean()  # 这下就能得到1.5了

# 更稳妥的方法,能处理无法转换的异常值
pd.to_numeric(s_str, errors="coerce").mean()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:20:22