python-3.x - 用不同的随机均匀变量替换 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 值。谢谢您的帮助!
解决方案
如果看起来您正在对一个系列(列)执行此操作,但相同的实现将适用于 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))
推荐阅读
- fork - 使用 systemd 时是否仍然需要在守护进程中分叉?
- ms-access - 将 Access 表中的数据转换为新表中的多行
- contentful - 脚本化迁移的内容最佳实践
- java - JVM LinkageError 和 Signature 区别
- angular - Angular 没有剪贴板的提供者
- python - Python 中的自定义错误
- c# - Xamarin XfxComboBox Show suggestion items on focus
- r - 计算R中数据表行中的唯一值
- java - Websphere 9 中 Java ear-file 的 Java.lang.LinkageError
- python - using 1's in the arrays to make a shape like '+' using numpy in python