熊猫:如何用该列的平均值替换一列中的零值,对于所有具有零值的列

时间:2019-03-24 00:28:13

标签: python pandas

我有一个数据框,其中多个值为零。 我想用该列的平均值替换零值,而无需重复代码。 我有一个称为运行时,预算和收入的列,它们都为零,我想用该列的平均值替换那些零值。

我曾经尝试一次在同一列上做一次:

    print(df['budget'].mean())    
    -> 14624286.0643    
    df['budget'] = df['budget'].replace(0, 14624286.0643)    

这是编写函数的一种方法,不必为所有列的每个零值多次编写代码吗?

3 个答案:

答案 0 :(得分:3)

所以这是pandas数据帧,我将使用mask将所有0设为np.nan,然后是fillna

df=df.mask(df==0).fillna(df.mean())

答案 1 :(得分:2)

同样,我们可以直接使用 replace 方法来实现。没有 fillna

df.replace(0,df.mean(axis=0),inplace=True)

方法信息: 将“ to_replace”中给出的值替换为“ value”。

DataFrame的值动态地替换为其他值。 这与使用 .loc或.iloc 进行更新不同,后者需要 您可以指定要更新值的位置。

答案 2 :(得分:0)

如何遍历所有列并替换它们?

for col in df.columns:
    val = df[col].mean()
    df[col] = df[col].replace(0, val)