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

如何在Pandas Series中按条件替换0值为100-1000随机数?解决赋值报错

解决方法

你的报错原因是:df.loc[df['Target']==0]选中的是DataFrame里所有Target值为0的整行,而你赋值的nums是一维数组,没法匹配整行的多列结构,所以触发了长度不匹配的错误。

直接的实现方式可以这样做:

针对DataFrame的Target列

import pandas as pd
import numpy as np

# 生成匹配数量的随机整数(100到1000闭区间)
mask = df['Target'] == 0
df.loc[mask, 'Target'] = np.random.randint(100, 1001, size=mask.sum())

如果是单独的Pandas Series

假设你的Series变量名为s:

mask = s == 0
s[mask] = np.random.randint(100, 1001, size=mask.sum())

这样做不需要手动指定size=924,代码会自动统计需要替换的0值数量,生成对应长度的随机数,避免手动计数出错。

另外要注意:np.random.randint(a, b)是左闭右开区间,所以要包含1000的话,第二个参数得写1001;如果用np.random.choice,对应的范围是range(100, 1001)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 10:12:53