You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将pandas DataFrame中10%的元素随机替换为NaN?

你可以通过生成随机布尔掩码的方式实现需求,两种常用实现方式如下:

方式1:按概率随机替换(允许小范围比例波动)

总共有100个元素,每次生成替换标记的概率为10%,代码如下:

import pandas as pd
import numpy as np

Dataset = pd.DataFrame(np.random.randint(0, 100, size=(10, 10)))
# 生成布尔掩码,True占比约10%
mask = np.random.choice([True, False], size=Dataset.shape, p=[0.1, 0.9])
# 对应位置替换为NaN
Dataset[mask] = np.nan

方式2:严格固定10%替换量

如果要求恰好10个元素被替换,可以先抽取固定数量的索引再赋值:

import pandas as pd
import numpy as np

Dataset = pd.DataFrame(np.random.randint(0, 100, size=(10, 10)))
total_count = Dataset.size
# 随机抽取10%的位置索引,无重复
selected_idx = np.random.choice(total_count, size=int(total_count * 0.1), replace=False)
# 把一维索引转为二维的行列坐标
rows, cols = np.unravel_index(selected_idx, Dataset.shape)
# 赋值为NaN
Dataset.values[rows, cols] = np.nan

注:由于pandas中整型不支持存储NaN,替换后数据集的类型会自动转为float64,属于正常现象。

内容的提问来源于stack exchange,提问作者ashish_goy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:06:03