用不同的随机统一变量替换Pandas DataFrame中的NaN值

问题描述 投票:2回答:2

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

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

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

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

python-3.x pandas numpy statistics data-science
2个回答
2
投票

如果您在系列(列)上执行此操作,但相同的实现将适用于DataFrame:

样本数据:

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))

2
投票

使用boolean indexingDataFrame.loc

m = df_copy['ep'].isna()

df_copy.loc[m, 'ep'] = np.random.uniform(3, 331, size=m.sum())
© www.soinside.com 2019 - 2024. All rights reserved.