我有一个带有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/

10-14 18:06
查看更多