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

Python中groupby聚合mean后如何用round限制小数位数?

解决方法:在GroupBy均值计算中结合round函数

嗨,我来帮你搞定这个小数位数的问题!这里有几种简单的方法可以把round()和mean()结合起来,轻松把price列的均值限制为两位小数:

方法1:先计算均值,再单独处理price列

这种方法最直观,先按body-style分组计算所有列的均值,之后再对price列应用round():

# 先分组计算均值
grouped_test_bodystyle = df_gptest2.groupby(['body-style'], as_index=False).mean()
# 对price列保留两位小数
grouped_test_bodystyle['price'] = grouped_test_bodystyle['price'].round(2)

方法2:分组时直接用agg指定计算规则(更高效)

如果不想多一步操作,可以在分组聚合的时候,直接对price列定义“先求均值再保留两位小数”的规则,用agg()方法实现:

grouped_test_bodystyle = df_gptest2.groupby(['body-style'], as_index=False).agg(
    price=('price', lambda col: round(col.mean(), 2))
)

这里用了命名聚合(named aggregation),price=('price', ...)里第一个price是结果列的名称,第二个是原数据中的列名,lambda函数完成“均值+四舍五入”的组合操作。

如果还有其他列需要同样处理,直接扩展agg的参数即可:

grouped_test_bodystyle = df_gptest2.groupby(['body-style'], as_index=False).agg(
    price=('price', lambda x: round(x.mean(), 2)),
    horsepower=('horsepower', lambda x: round(x.mean(), 2))
)

小提示

  • 方法2更高效,因为它只在聚合阶段处理需要的列,避免了对所有列先计算均值再处理的额外开销。
  • round()的参数2就是你要保留的小数位数,要是需要其他位数,直接改这个数字就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:02:35