【问题标题】:How to ignore value 0 during using aggregation function in Python Pandas?在 Python Pandas 中使用聚合函数时如何忽略值 0?
【发布时间】: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 中做到这一点?

【问题讨论】:

    标签: python pandas aggregate-functions


    【解决方案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")))
    

    【讨论】:

      猜你喜欢
      • 2014-11-26
      • 1970-01-01
      • 2020-07-30
      • 2019-04-30
      • 2022-10-04
      • 1970-01-01
      • 2022-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多