在 Python Pandas 中使用聚合函数时如何忽略值 0?

Posted

技术标签:

【中文标题】在 Python Pandas 中使用聚合函数时如何忽略值 0?【英文标题】:How to ignore value 0 during using aggregation function in Python Pandas? 【发布时间】:2021-10-16 01:13:18 【问题描述】:

我在 Python Pandas 中有如下数据框:

product   | age
------------
A  | 22
B  | 0 
B  | 38
B  | 0
A  | 11

我需要通过下面的代码来聚合它:

df.groupby("product").agg(mean_age = ("age","mean))

但是第二行 0 肯定会降低我的平均年龄,我可以修改上面的代码来定义我不想考虑年龄为 0 的行吗?

如何在 Python Pandas 中做到这一点?

【问题讨论】:

【参考方案1】:

使用 replace() 将 0 转换为 NaN 然后 groupby() 并聚合:

df.replace(0,float('NaN')).groupby("product").agg(mean_age = ("age","mean"))

过滤掉不为0的行,然后使用groupby:

df[df['age'].ne(0)].groupby("product").agg(mean_age = ("age","mean"))

如果需要将特定列的 0 替换为 NaN,请使用:

(df.assign(age=df['age'].replace(0,float('NaN')))
    .groupby("product").agg(mean_age = ("age","mean")))

【讨论】:

以上是关于在 Python Pandas 中使用聚合函数时如何忽略值 0?的主要内容,如果未能解决你的问题,请参考以下文章

应用自定义 groupby 聚合函数在 pandas python 中输出二进制结果

100天精通Python(数据分析篇)——第65天:Pandas聚合操作与案例

数据分析—Pandas 中的分组聚合Groupby 高阶操作

使用mongodb在utc中存储日期时如何处理时区问题?

# yyds干货盘点 #盘点一道Pandas中分组聚合groupby()函数用法的基础题

# yyds干货盘点 # 盘点一道Pandas中分组聚合groupby()函数用法的基础题