从一个更大的数据帧中随机抽取一个数据帧


n = 100 # (n=height * width)
height = 10
width = 10
column = [1,2,3,4,5,6,7,8,9,10]
indices = [1,2,3,4,5,6,7,8,9,10]
Rack2 = pd.DataFrame(np.random.choice(np.arange(n),size=(height, width), replace=False), index=list(indices), columns=list(column))
Rack = Rack2.sort_index(ascending=False)
a = np.repeat([True,False], Rack.size//2) 
b = np.random.shuffle(a)
a = a.reshape(Rack.shape)
SI = Rack.mask(a)
RI = Rack.where(a)
StorageSet = SI.stack() 
ss=dfStorage.index
RetrievalSet = RI.stack() 
tt=D3.index
在上面的python代码中,有一个10x10的Rack。机架的一半(50项)由存储项组成,另一半由检索项组成。

我想做的不是机架大小的一半,而是如果我有一个10x10的机架,例如,该数据帧的30是存储项。剩下的70个项目中有30个是检索项目。我该怎么做呢?

您可以通过对代码进行几次修改来做到这一点。首先修改a的初始化:

samp_size = 30
a = np.hstack([np.repeat(0, samp_size), np.repeat(1, samp_size), np.repeat(np.nan, n - (2 * samp_size)])

则可以得到SIRI为:

SI = Rack.where(a==0)
RI = Rack.where(a==1)

其余的代码应该是相同的。

最新更新