Python数据框:定义函数将每列的NaN值替换为每列的均值

0 投票
1 回答
34 浏览
提问于 2025-04-14 16:21

我有一个数据集(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)

撰写回答