我想用people's Age(其中还包含数值,不仅包括NaN值)替换列中缺少的值,但到目前为止,我try 的所有方法要么无法按我希望的方式工作,要么根本无法工作.

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

我try 了以下方法:

  • 替换为numpy,替换NaN值,但所有值都替换为same number

    df_travel['Age'] = df_travel['Age'].replace(np.nan, round(rd.normalvariate(age_mean, age_std),0))
    
  • Fillna和pandas也将NaN值替换为same number

    df_travel['Age'] = df_travel['Age'].fillna(round(rd.normalvariate(age_mean, age_std),0))
    
  • 在带有pandas的数据帧上应用函数,替换NaN值,但不替换also changes all existing numerical values(我只希望填充NaN值)

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

任何 idea 都将不胜感激.提前谢谢.

推荐答案

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相关问答推荐

仅使用2种 colored颜色 创建热图

除了Python之外,可以替代bare?

如何知道标志是否由用户传递或具有默认值?

自定义新元未更新参数

将numpy矩阵映射到字符串矩阵

如何用symy更新分段函数

如果索引不存在,pandas系列将通过索引获取值,并填充值

分组数据并删除重复数据

DataFrame groupby函数从列返回数组而不是值

将特定列信息移动到当前行下的新行

带条件计算最小值

如何使用html从excel中提取条件格式规则列表?

海运图:调整行和列标签

运行终端命令时出现问题:pip start anonymous"

mypy无法推断类型参数.List和Iterable的区别

Django—cte给出:QuerySet对象没有属性with_cte''''

使用Python从rotowire中抓取MLB每日阵容

计算空值

将链中的矩阵乘法应用于多组值

BeautifulSoup-Screper有时运行得很好,很健壮--但有时它失败了::可能这里需要一些更多的异常处理?