使用 python 块随机化?

问题描述

我有以下输入表(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 (将#修改为@)