我有一个dataframe,我想采样随机像df.sample(n=13250)
,但基于一个条件,即列x (dtype=float) 的总和不超过12000。
知道怎么处理吗
我尝试df[df['x'].sum() <= 12000].sample(n=13250)
,但没有成功
ark|typedoc|planographic|intaglio|relief|photosensitive|monochrome|colors|x
btv1b7700367s|True|False|False|False|True|True|False|3.0
在我的示例中,ark
是我的唯一id,除了列x之外,所有列的类型都是bool
。
为了更清楚地了解上下文,id对应于一个文档,每个文档可以有一个可能的页数,从1到455,在x
列中表示。
我想创建一个样本的这个数据集,其中包含一个最大的12000页,而不是12000个文件,因为一个文件可以有很多页。最后一件事,我不想限制的文件数量为一个单一的页面,因为我需要有一个相当有代表性的人口与文件从min()到max()
2条答案
按热度按时间snvhrwxg1#
您可以对原始 Dataframe 进行 Shuffle ,添加累积页数列,然后在累积页数超过12,000之前根据需要获取任意多的行:
感谢@mozway的建议,答案被更新为仅对12,000页或更少的文档进行采样。这可以防止大文档(12,001页)在样本顶部被打乱,从而导致空选择。
1qczuiv02#
我作为新手的第一次尝试回答问题以变得更好:
看起来有效,但很明显: