在Python Pandas中使用聚合函数时如何忽略值0?
How to ignore value 0 during using aggregation function in Python Pandas?
我在 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 中做到这一点?
使用 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 中有数据框,如下所示:
product | age
------------
A | 22
B | 0
B | 38
B | 0
A | 11
我需要通过以下代码对其进行聚合:
df.groupby("product").agg(mean_age = ("age","mean))
但是第二行 0 肯定会降低我的平均年龄,我可以修改上面的代码来定义我不想考虑年龄为 0 的行吗?
如何在 Python Pandas 中做到这一点?
使用 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")))