首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机抽样组:如何指定n,而不是权重?(使用DataFrameGroupBy.sample)

随机抽样组:如何指定n,而不是权重?(使用DataFrameGroupBy.sample)
EN

Stack Overflow用户
提问于 2021-01-31 12:56:26
回答 1查看 184关注 0票数 1

这个问题遵循这个问题 (其他贡献者要求我将其作为一个新问题发布)。

我们有一个模拟df:

代码语言:javascript
复制
df = pd.DataFrame({
        'id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
        'country': ['USA', 'USA', 'USA', 'USA', 'USA', 'Canada', 'Canada', 'Canada', 'USA', 'Canada']
})

假设我想从美国采集4行随机数据,从加拿大采集2行随机数据。我试过:

代码语言:javascript
复制
df.groupby("country").sample(n=[4, 2])

这将返回一个错误。错误可能是使用方括号。那么,如何为每个组指定不同的n呢?

注意,理想情况下,我需要一个使用df.groupby.sample的解决方案。还要注意,我需要指定n,而不是文档中的比例或权重(参见这里)。最后,请注意,我还需要设置一个种子。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-31 13:10:38

您可以在groupcountry上获取数据,然后分别从字典中获取要采集的样本数的.sample每组,最后对所有抽样组进行.concat

代码语言:javascript
复制
d = {'USA': 4, 'Canada': 2} # mapping dict
pd.concat([g.sample(d[k]) for k, g in df.groupby('country', sort=False)])
代码语言:javascript
复制
   id country
0   1     USA
4   5     USA
1   2     USA
2   3     USA
6   7  Canada
9  10  Canada
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65979343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档