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

Python Pandas中mean().round(2)报错:float对象无round属性

问题原因分析与解决办法

嗨,这个问题我刚入门Pandas的时候也踩过一模一样的坑!让我给你把前因后果讲清楚~

核心差异:返回对象的类型不同

这两种写法的本质区别,在于调用函数后返回的对象类型完全不一样:

  • 当你调用 ratings['rating'].describe() 时,返回的是一个Pandas Series对象。Pandas为Series类封装了专属的 .round() 方法,所以链式调用 describe().round(2) 可以正常执行。
  • 而调用 ratings['rating'].mean() 时,返回的是一个Python原生float对象。Python的基础float类型并没有内置 .round() 方法,这就是你触发 AttributeError: 'float' object has no attribute 'round' 报错的原因。

正确的写法示例

针对均值取两位小数的需求,你有两种常用的解决方式:

  1. 使用Python内置的round()函数(最直接):
rounded_mean = round(ratings['rating'].mean(), 2)

这里是把float类型的均值作为参数传给内置函数round(),第二个参数指定保留的小数位数。

  1. 先将均值转为Pandas对象再调用.round():
    如果你习惯用Pandas的链式语法,可以先把单个float值转为Series,再调用方法:
# 方式一:用to_series()转换
rounded_mean = ratings['rating'].mean().to_series().round(2)

# 方式二:用agg直接获取Series格式的均值
rounded_mean = ratings['rating'].agg('mean').round(2)

这两种写法都会返回一个Series对象,调用.round()就不会报错了。

小验证技巧

如果你不确定某个操作返回的是什么类型,可以用type()函数查看:

print(type(ratings['rating'].describe()))  # 输出 <class 'pandas.core.series.Series'>
print(type(ratings['rating'].mean()))      # 输出 <class 'float'>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:38:29