gpt4 book ai didi

python - 如何在 Python 上用不同的随机数填充 NaN 值?

转载 作者:行者123 更新时间:2023-12-05 01:24:03 25 4
gpt4 key购买 nike

我想用人们的年龄(它还包含数值,不仅是 NaN 值)替换一列中缺失的值,但到目前为止我尝试过的所有方法要么无法按照我想要的方式运行,要么无法实现'根本不起作用。

我希望应用一个随机变量生成器,它使用从该列获得的均值和标准差服从正态分布。

我尝试了以下方法:

  • 用 numpy 替换,替换 NaN 值,但所有值都用相同的数字

    df_travel['Age'] = df_travel['Age'].replace(np.nan, round(rd.normalvariate(age_mean, age_std),0))
  • 用 pandas 填充,也替换 NaN 值,但所有值都使用相同的数字

    df_travel['Age'] = df_travel['Age'].fillna(round(rd.normalvariate(age_mean, age_std),0))
  • 使用 pandas 在数据帧上应用一个函数,替换 NaN 值,但也更改所有现有数值(我只想填充 NaN 值)

    df_travel['Age'] = df_travel['Age'].where(df_travel['Age'].isnull() == True).apply(lambda v: round(rd.normalvariate(age_mean, age_std),0))

如有任何想法,我们将不胜感激。提前致谢。

最佳答案

Series.fillna可以接受一个系列,所以生成一个大小为len(df_travel)的随机数组:

rng = np.random.default_rng(0)
mu = df_travel['Age'].mean()
sd = df_travel['Age'].std()

filler = pd.Series(rng.normal(loc=mu, scale=sd, size=len(df_travel)))
df_travel['Age'] = df_travel['Age'].fillna(filler)

关于python - 如何在 Python 上用不同的随机数填充 NaN 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71717020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com