python - 用随机数填充多个 Nan 值,而不仅仅是一个数字

标签 python python-3.x dataframe nan

我有一个包含多个 NaN 值的数据框。我想用 0,1 之间的随机数填充每个值。我尝试了 fillna 但这只用一个值填充代码。

我们可以使用itterows,但它会消耗大量资源。我们还有什么其他方法可以做到这一点吗?如果是,那么如何做?以下是我的数据框的示例。

> df 
   a   b   c   d
0  1  10   na  na
1  2  20   40  30
2  24 na   na  na 

预期输出

> df 
   a     b     c     d
0  1    10     0.7   0.9
1  2    20     40    30
2  24   0.9    0.34  0.532

基本上替换 na 之间的任何内容 (0,1)

最佳答案

您可以创建自己的公式和随机数:

在下面的解决方案中,我将列 a 与随机数相乘,并只取分数,因为您想要 0 到 1 之间的数字。

import pandas as pd 
import numpy as np
import random

df = pd.DataFrame({'a':[1,2,24], 'b':[10,20, np.nan],'c':[np.nan,40,np.nan],'d':[np.nan,30,np.nan]})

for c in df.columns:
    df[c] = np.where(df[c].isnull(),(df['a']*random.random())%1,df[c])

print(df)

输出:

     a          b          c          d                                                                                                
0   1.0  10.000000   0.526793   0.678061                                                                                                
1   2.0  20.000000  40.000000  30.000000                                                                                                
2  24.0   0.865441   0.643032   0.273461

关于python - 用随机数填充多个 Nan 值,而不仅仅是一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55630808/

相关文章:

python - 如何在 Python 中解析此 XML 响应?

Python/ flask : Application is running after closing

python - 将 tkinter 光标应用到整个窗口

python - Scrapy 代码抛出 TypeError : 'NoneType' object is not iterable

python数据帧写入R数据格式

dataframe - 合并数据字符串和时间字符串

python - 安装了 pip,但找不到 virtualenvwrapper_bashrc 在哪里

python - 如何在 celery 中安排工作日感知工作

python - 如何限制没有终端或多处理库的 python 脚本使用的 CPU 数量?

python - 将 Lambda 与从数据帧的不同列获取参数的函数一起使用