我有一个数据框,其中多个值为零。 我想用该列的平均值替换零值,而无需重复代码。 我有一个称为运行时,预算和收入的列,它们都为零,我想用该列的平均值替换那些零值。
我曾经尝试一次在同一列上做一次:
print(df['budget'].mean())
-> 14624286.0643
df['budget'] = df['budget'].replace(0, 14624286.0643)
这是编写函数的一种方法,不必为所有列的每个零值多次编写代码吗?
答案 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)