Заполните несколько значений Nan случайными числами, а не только одним - PullRequest
1 голос
/ 11 апреля 2019

У меня есть фрейм данных с несколькими значениями NaN. Я хочу заполнить каждое случайным числом between 0,1. Я попытался fillna, но это заполняет код только одним значением.

Мы можем использовать itterows, но он потребляет много ресурсов. Есть ли еще способ, которым мы можем это сделать, и если да, то как? Ниже приведен пример моего dataframe.

> 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)

1 Ответ

0 голосов
/ 15 апреля 2019

Вы можете создать собственную формулу вместе со случайным числом:

В приведенном ниже решении я умножаю столбец 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
...