【问题标题】:Fill multiple Nan values with random numbers and not just one single number用随机数填充多个 Nan 值,而不仅仅是一个数字
【发布时间】:2019-09-01 23:45:29
【问题描述】:

我有一个包含多个 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)之间的任何东西

【问题讨论】:

  • 请展示您已经尝试过的内容,或者至少提供一个小样本来说明您的数据是什么样的。
  • @pjs 我已经修改了我的问题,如果还有什么需要请告诉我。
  • @AkshayNevrekar 提供了预期的输出。

标签: python python-3.x dataframe nan


【解决方案1】:

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

在下面的解决方案中,我将列 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-30
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    相关资源
    最近更新 更多