python - Replace NaN in a dataframe with random values -
i have data frame (data_train) nan values, sample given below:
republican n y republican n nan democrat nan n democrat n y
i want replace nan random values .
republican n y republican n rnd2 democrat rnd1 n democrat n y
how do it.
i tried following, had no luck:
df_rand = pd.dataframe(np.random.randn(data_train.shape[0],data_train.shape[1])) data_train[pd.isnull(data_train)] = dfrand[pd.isnull(data_train)]
when above dataframe random numerical data above script works fine.
well, if use fillna
fill nan
, random generator works once , fill n/as same number.
so, make sure random number generated , used each time. dataframe :
date b 0 2015-01-01 nan nan 1 2015-01-02 nan nan 2 2015-01-03 nan nan 3 2015-01-04 nan nan 4 2015-01-05 nan nan 5 2015-01-06 nan nan 6 2015-01-07 nan nan 7 2015-01-08 nan nan 8 2015-01-09 nan nan 9 2015-01-10 nan nan 10 2015-01-11 nan nan 11 2015-01-12 nan nan 12 2015-01-13 nan nan 13 2015-01-14 nan nan 14 2015-01-15 nan nan 15 2015-01-16 nan nan
i used following code fill nans
in column a:
import random x['a'] = x['a'].apply(lambda v: random.random() * 1000)
which give like:
date b 0 2015-01-01 96.538211 nan 1 2015-01-02 404.683392 nan 2 2015-01-03 849.614253 nan 3 2015-01-04 590.030660 nan 4 2015-01-05 203.167519 nan 5 2015-01-06 980.508258 nan 6 2015-01-07 221.088002 nan 7 2015-01-08 285.013762 nan
Comments
Post a Comment