首页 > 解决方案 > 用不同的随机均匀变量替换 Pandas DataFrame 中的 NaN 值

问题描述

我在 pandas 数据框列中有一个均匀分布,其中有一些我想替换的 NaN 值。

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

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

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

标签: python-3.xpandasnumpystatisticsdata-science

解决方案


如果看起来您正在对一个系列(列)执行此操作,但相同的实现将适用于 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))

推荐阅读