Python数据框:定义函数将每列的NaN值替换为每列的均值
我有一个数据集(df):
我想写一个Python的if/else函数,把每一列中的NaN值(缺失值)替换成该列的平均值。
我找到了一种简单的方法,不用def函数:
df2 = df.apply(lambda x: x.fillna(x.mean()), axis = 0)
但是我也想知道,如何用def函数来实现同样的效果?我试过:
import pandas as pd
import numpy as np
def my_func(x):
if x is None:
return x.mean()
else:
return x
df2 = df.apply(lambda x : my_func(x), axis=1)
但这个方法不行。谢谢大家的建议!
1 个回答
0
通过使用评论中提供的解决方案,你可以这样做:
def fill_nan_with_mean(df):
means = df.mean()
df.fillna(means, inplace=True)
如果你想指定某一列的话:
def fill_nan_with_mean(df, column_name):
mean_value = df[column_name].mean()
df[column_name].fillna(mean_value, inplace=True)