我的数据看起来是这样的:
Identifier Strain Other columns, etc.
1 A
2 C
3 D
4 B
5 A
6 C
7 C
8 B
9 D
10 A
11 D
12 D我想随机选择n行,同时保持应变值的多样性。例如,我想要一组6,所以我希望我的最后一行至少包括每种类型的菌株中的一种,两种菌株出现两次。
我尝试过将应变列转换为numpy数组,并使用方法random.choice,但这似乎没有运行。我也尝试过使用.sample,但它并没有最大限度地提高菌株的多样性。
这是我最近的一次尝试,它按照顺序输出7大小的样本(标识符0-7),所有菌株都是相同的。
randomsample = df[df.Strain == np.random.choice(df['Strain'].unique())].reset_index(drop=True)发布于 2021-03-20 01:51:10
我相信numpy有什么东西能做到这一点,但我记不起是哪一种了。下面是一个相当快速的方法:
randomness
n行所以在代码中:
n = 6
df = df.sample(frac=1) # step 1
enums = df.groupby('Strain').cumcount() # step 2
orders = np.argsort(enums) # step 3
samples = df.iloc[orders[:n]] # step 4输出:
Identifier Strain Other columns, etc.
2 3 D NaN
7 8 B NaN
0 1 A NaN
5 6 C NaN
4 5 A NaN
8 9 D NaNhttps://stackoverflow.com/questions/66716352
复制相似问题