我有这样的数据框,如何fillna
列-0.5
从0.5
到value
(包括边界)的随机浮点值?
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
谢谢。
答案 0 :(得分:2)
如果要替换每个NaN
,请使用Series.mask
:
df['value'] = df['value'].mask(df['value'].isna(), np.random.uniform(-0.5, 0.5, size=len(df)))
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)