问题描述
我有以下输入表(df):
A 列 | B 列 | 块 |
---|---|---|
A | 12 | 1 |
B | 32 | 1 |
C | 44 | 1 |
D | 76 | 2 |
E | 99 | 2 |
F | 123 | 2 |
G | 65 | 2 |
H | 87 | 3 |
我 | 76 | 3 |
J | 231 | 3 |
k | 80 | 4 |
l | 55 | 4 |
米 | 27 | 5 |
n | 67 | 5 |
o | 34 | 5 |
我想执行块随机化,以便从每个块中选取一个值(从 1、2、3、4、5 中选取一个值)并将其创建为单独的表。
输出应如下所示:
A 列 | B 列 | 块 | 组 |
---|---|---|---|
B | 32 | 1 | A1 |
E | 99 | 2 | A1 |
我 | 76 | 3 | A1 |
l | 55 | 4 | A1 |
米 | 27 | 5 | A1 |
A | 12 | 1 | A2 |
F | 123 | 2 | A2 |
k | 80 | 3 | A2 |
米 | 27 | 4 | A2 |
n | 67 | 5 | A2 |
C | 44 | 1 | A3 |
H | 87 | 2 | A3 |
J | 231 | 3 | A3 |
n | 67 | 4 | A3 |
o | 34 | 5 | A4 |
D | 76 | 1 | A4 |
G | 65 | 2 | A4 |
随机选择的行,使得每组都有所有的块(均匀分布)。
到目前为止我尝试了什么?
df = df.groupby('blocks').apply(lambda x: x.sample(frac=1,random_state=1234)).reset_index(drop=True)
treatment_groups = [f"A{i}" for i in range(1,n+1)]
df['Groups'] = (df.index // n).map(dict(zip(idx,treatment_groups)))
这不会根据块列随机化。我该怎么做?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)