我想创建一个系列,这样它就随机包含不同范围的值。 假设我有一个包含12行的序列。我想随机选择4行,并在4到10之间随机填充值。然后我必须再次选择另外4行,并在-4到-10之间随机填充值。同样,我必须选择所有行的其余部分,并在15到100之间随机填充值。如何在熊猫中实现这一点
输入:
Col1
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
输出:
Col1
0 20
1 34
2 -2
3 -7
4 5
5 69
6 -5
7 7
8 97
9 6
10 9
11 -9
到目前为止,我尝试了随机屏蔽索引和填充值
df.loc[mask1,'col1']=np.random.randint(4,10, df.shape[0])
df.loc[mask2,'col1']=np.random.randint(-4,-10, df.shape[0])
df.loc[mask3,'col1']=np.random.randint(15,100, df.shape[0])
有没有其他更好的方法来实现这一点
您可以将所有值连接在一起,然后使用^{} :
或:
编辑:
我认为最简单的方法是制作索引列表并将其洗牌
编辑:
我已经测试过了。它所做的是用第一个范围填充随机1/3的元素,用第二个范围填充左1/2的数字,其余用第三个范围填充。索引是随机的,因为它们是从“索引”列表中选择的,并且是无序的。时间复杂度为O(n)(线性),其中n是数据长度
相关问题 更多 >
编程相关推荐