You need to enable JavaScript to run this app. 使用np.random.randint实现Pandas DataFrame列随机掩码问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

使用np.random.randint实现Pandas DataFrame列随机掩码问题咨询

问题原因

你原来的写法里np.random.randint(1,3)只会生成1个固定的随机整数,所以mask方法会把所有符合df['A']>1条件的行统一替换成这个固定值,自然所有行的替换结果都一样。
另外额外提一句:np.random.randint的取值范围是左闭右开,你写的(1,3)只能生成1、2两个值,要拿到1~3的随机整数需要把上限改成4。

实现方法

只要给替换位置传入和对应行数长度一致的随机数组即可,有两种常用写法:

写法1:直接生成和DataFrame等长的随机数组

适合数据量不大的场景,写法最简单:

df['A'] = df['A'].mask(df['A'] > 1, np.random.randint(1, 4, size=len(df)))

size=len(df)参数会生成和df行数相同的一维随机数组,每个位置的数值独立随机,对应替换每一行的符合条件的值。

写法2:仅给需要替换的行生成随机数

适合数据量大、符合条件的行占比不高的场景,效率更高:

# 先筛选出需要替换的行的掩码
mask = df['A'] > 1
# 只给符合条件的位置生成对应数量的随机数
df.loc[mask, 'A'] = np.random.randint(1, 4, size=mask.sum())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 10:06:04