使用随机数填充多个Nan值,而不只是一个数字

问题描述 投票:1回答:1

我有一个包含多个NaN值的数据框。我想用随机数填充每个between 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)

python python-3.x dataframe nan
1个回答
0
投票

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

在下面的解决方案中,我将列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
© www.soinside.com 2019 - 2024. All rights reserved.