在包含零的 (1,80) 数据框中,我想在随机位置将 N (=30) 个值设置为 1,所以我尝试了这个:
df = pd.DataFrame( 0, index = range(1), columns = range(80) )
df[ np.random.randint(80, size=30) ] = 1
但是如果我检查,我会得到 25 个“1”而不是 30 个:
( df.loc[0] == 1 ).sum()
25
出了什么问题,我该如何解决?
请您参考如下方法:
这是因为对 np.random.randint 的调用可能会两次返回相同的值,而这种冗余被 pandas 消除了(检查 df[[1, 1]])。因此,您可以使用 np.random.choice(80, 30, replace=False)。
