我有一个带有Na值的数据帧(DATAYCH),下面给出一个示例:
republican n y
republican n NaN
democrat NaN n
democrat n y
我想用一些随机值替换所有的nan,比如。
republican n y
republican n rnd2
democrat rnd1 n
democrat n y
我该怎么做。
我试过以下方法,但没有成功:
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)]
当我使用带有随机数字数据的数据帧执行上述操作时,上面的脚本可以正常工作。
最佳答案
好吧,如果你使用fillna
来填充NaN
,一个随机生成器只工作一次,将用相同的数字填充所有n/as。
所以,确保每次都生成并使用一个随机数。
对于这样的数据帧:
Date A 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
我使用以下代码填写了A列中的
NaNs
:import random
x['A'] = x['A'].apply(lambda v: random.random() * 1000)
这会给我们一些东西:
Date A 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
关于python - 用随机值替换数据框中的NaN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30647247/