如何在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
相关产品推荐
相关产品推荐

