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

Pandas:如何在分组内计算忽略0值的平均值?

解决方案

要实现分组计算时忽略0值的平均值,可以通过以下两种方法解决:

方法一:将0替换为缺失值后求均值

Pandas的mean()方法默认会忽略缺失值(NaN),因此可以先把数据中的0替换为pd.NA,再执行分组求均值操作:

import pandas as pd

# 替换0为缺失值,再分组计算均值
result = df.replace(0, pd.NA).groupby('name', as_index=False).mean()

这个方法简单高效,适合大多数场景。

方法二:使用自定义聚合函数

通过自定义lambda函数,对每组的每一列筛选出非0值后计算均值:

# 自定义聚合逻辑,仅计算非0值的均值
result = df.groupby('name', as_index=False).agg(lambda col: col[col != 0].mean())

如果需要保留原列的数据类型特性,这个方法同样适用。

验证示例数据

以你提供的___Backyard Jr. (__Xinyi)分组为例:

  • star列非0值为[4,3,4,3],均值为3.5
  • atm列非0值为[4],均值为4.0
  • food列非0值为[4,3],均值为3.5
    两种方法都能得到符合要求的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:25:19