在 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 高阶操作