我有一个非常大的数据集,其 struct 类似于以下:
df = pd.DataFrame({
'ID': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'Group': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2],
'SampleSize': [4, 4, 4, 4, 4, 4, 1, 1, 1, 1]
})
这意味着,例如,在Group
1
内,有6个不同的单位可供 Select (ID
s),并且对于这个Group
1
,需要 Select 4个单位来形成样本.因此,最终我想得到一个额外的列,指示随机 Select 的样本,如下所示:
df = pd.DataFrame({
'ID': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'Group': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2],
'SampleSize': [4, 4, 4, 4, 4, 4, 1, 1, 1, 1]
'Sample': [0, 1, 1, 1, 0, 1, 0, 1, 0, 0]
})
我试过这样的方法:
def select_random_ids(group):
sample_size = group['SampleSize'].iloc[0]
selected_ids = np.random.choice(group['ID'], size=sample_size, replace=False)
return pd.DataFrame({'ID': selected_ids})
和.apply(select_random_ids))
,但我不能让它工作.