【发布时间】:2022-01-07 20:59:36
【问题描述】:
我有一个数据框 df 和患者 subject_id,包括他们的 gender 和他们的 age。
我想从这个数据框中抽取一个大小为n 的随机样本,具有以下特征:
- 50% 男性,50% 女性
- 中位年龄为 40 岁
知道如何使用 python 来实现吗? 谢谢!
【问题讨论】:
标签: python pandas dataframe random sample
我有一个数据框 df 和患者 subject_id,包括他们的 gender 和他们的 age。
我想从这个数据框中抽取一个大小为n 的随机样本,具有以下特征:
知道如何使用 python 来实现吗? 谢谢!
【问题讨论】:
标签: python pandas dataframe random sample
我认为你想要的比DataFrame.sample 提供的开箱即用的东西要复杂一些。可以像这样(分别)生成满足您的每个条件的随机样本:
n/2,然后对男性进行同样的操作,然后将它们合并n/2,然后对40岁以上做同样的事情,然后将它们组合起来。 (但请注意,这并不能保证中位数正好是 40。)如果您想结合这两个约束条件,您可能需要抽样 4 次 - 40 岁以下的女性、40 岁以下的男性等。但这是一般的想法。
采样代码如下所示:
df.loc[df.age < 40, 'subject_id'].sample(n/2)
df.loc[df.gender == 'F', 'subject_id'].sample(n/2)
【讨论】: