我有一个数据帧df
和患者subject_id
,包括他们的gender
和age
。
我想从这个数据帧中抽取一个n
大小的随机样本,具有以下特征:
- 50%为男性,50%为女性
- 中位年龄40岁
知道我如何使用python实现这一点吗?非常感谢。
我认为您想要的东西比DataFrame.sample
开箱即用的东西要复杂一点。可以(分别(生成满足每个条件的随机样本,如下所示:
- 仅对女性进行筛选,并随机抽取
n/2
,然后对男性进行同样的操作,然后将其汇集 - 对40岁以下的人进行筛选,随机抽取
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)