给定16个具有如下颜色分布的球
In[1]: df = pd.DataFrame([10,5,1],index=['red', 'green','blue'], columns=['balls'])
In[2]: df
Out[2]
balls
red 10
green 5
blue 1
我想提取一个随机子集,比如说,10个球,例如7个红色,2个绿色和1个蓝色。我不能使用df.sample(),因为这只会给我一个颜色,可能是由“balls”加权的,除非我把它放在一个循环中,每次提取1个球并更新剩余的球数。然而,这是非常缓慢的,当我们有100.000个500色的球,我们想随机抽取其中的80.000个。 我可以列个清单
In[3]: list = ['blue', 'blue', 'blue', ..., 'green', 'green', ..., 'blue']
取10个介于0和len(列表)之间的随机整数,但这似乎有点麻烦。 有没有简单快捷的方法来解决这个问题
您可以获取数据帧的
index
:编辑:如注释中所述,这并不保证对球数的限制
为了保证这一点,您需要创建一个包含所有值的数据帧,然后对其调用
sample(n)
请注意,您不能再对样本进行加权,因为它们已按构造进行加权(颜色的行数越多,拾取该颜色的可能性就越大)
相关问题 更多 >
编程相关推荐