Python 3.x 用不同的随机均匀变量替换数据帧中的NaN值

Python 3.x 用不同的随机均匀变量替换数据帧中的NaN值,python-3.x,pandas,numpy,statistics,data-science,Python 3.x,Pandas,Numpy,Statistics,Data Science,我在pandas dataframe列中有一个统一的分布,其中有几个NaN值我想替换 由于数据是均匀分布的,所以我决定使用从列的最小值和最大值范围中抽取的随机均匀样本填充空值。我使用以下代码获得随机均匀样本: df_copy['ep'] = df_copy['ep'].fillna(value=np.random.uniform(3, 331)) 当然,使用pd.DafaFrame.fillna()将用相同的值替换所有现有的NAN。我希望每个NaN都是不同的值。我假设for循环可以完成工作,但

我在pandas dataframe列中有一个统一的分布,其中有几个NaN值我想替换

由于数据是均匀分布的,所以我决定使用从列的最小值和最大值范围中抽取的随机均匀样本填充空值。我使用以下代码获得随机均匀样本:

df_copy['ep'] = df_copy['ep'].fillna(value=np.random.uniform(3, 331))

当然,使用
pd.DafaFrame.fillna()
将用相同的值替换所有现有的NAN。我希望每个NaN都是不同的值。我假设
for
循环可以完成工作,但我不确定如何创建这样一个循环来专门处理这些NaN值。谢谢你的帮助

如果看起来您是在系列(列)上执行此操作,但在数据帧上也可以使用相同的实现:

样本数据:

series = pd.Series(range(100))

series.loc[2] = np.nan
series.loc[10:15] = np.nan
解决方案:

series.mask(series.isnull(), np.random.uniform(3, 331, size=series.shape))
用于:


请查df.WHERE谢谢你的帮助!
m = df_copy['ep'].isna()

df_copy.loc[m, 'ep'] = np.random.uniform(3, 331, size=m.sum())