首页 > 解决方案 > Pandas:根据产品类型将零值和 NAN 值替换为均值列

问题描述

我想用列 Mean 替换零和 NAN 值,但是,我希望代码对与产品类型(AB 或 C)相关的平均值进行分类

总而言之,我有一个共有 4 列的 pandas 数据框。其中一列指定 3 种产品类型之一:A、B 和 C。

每行有 3 个测量列。我想将每列的 0 和 NAN 值替换为与产品类型相关的列平均值。如下表:

因此,我想编写一个允许软件计算以下内容的语法:

产品 A 各列测量值 1,2 和 3 的平均值

产品 B 各列测量值 1,2 和 3 的平均值

产品 C 各列测量值 1,2 和 3 的平均值

然后用各自计算的平均值替换 nan 和 zero 列值。 在此处输入图像描述

对于这样的操作,我们可以使用以下代码行:

df.fillna(df.mean(), inplace=True)

但是,这假定均值适用于列中的所有值,而不适用于另一列中定义的类别(这里是产品类型类别 A、B 和 C)

非常感谢您对此的帮助。谢谢

标签: pythonpandasmean

解决方案


让我们transform尝试groupby

df.fillna(df.groupby('PRODUCT TYPE').transform('mean'), inplace=True)

推荐阅读