一列的Fillna,其随机浮点值在Pandas范围内

时间:2019-12-24 11:41:19

标签: python pandas dataframe

我有这样的数据框,如何fillna-0.50.5value(包括边界)的随机浮点值?

  city district       date  value
0    a        b   2019/8/1   0.15
1    a        b   2019/9/1   0.12
2    a        b  2019/10/1    NaN
3    c        d   2019/8/1   0.03
4    c        d   2019/9/1  -0.36
5    c        d  2019/10/1    NaN

谢谢。

3 个答案:

答案 0 :(得分:2)

如果要替换每个NaN,请使用Series.mask

df['value'] = df['value'].mask(df['value'].isna(), np.random.uniform(-0.5, 0.5, size=len(df)))

numpy.where

df['value'] = np.where(df['value'].isna(), 
                       np.random.uniform(-0.5, 0.5, size=len(df)), 
                       df['value'])

print (df)
  city district       date     value
0    a        b   2019/8/1  0.150000
1    a        b   2019/9/1  0.120000
2    a        b  2019/10/1  0.227054
3    c        d   2019/8/1  0.030000
4    c        d   2019/9/1 -0.360000
5    c        d  2019/10/1 -0.001102

答案 1 :(得分:1)

您需要指定“随机”的含义。假设您的意思是“均匀随机”,则可以使用Joe Smith closest to: ['Joe Montana', 'Tom Brady'] Mike Thomas closest to: ['Joe Montana', 'Tom Brady'] Steve Johnson closest to: ['Dan Marino', 'Tom Brady']

fill_na

答案 2 :(得分:1)

您可以使用套用方法:

def func(val):
    if np.isnan(val):
        return random.uniform(-0.5, 0.5)
    else:
        return val

df['value'] = df['value'].apply(func)