我有一个 15466 行 × 125 列的数据框。“主题 ID”列(15466 行)包含 400 个唯一 ID,其中每个 ID 出现大约 40 次。我想从我的数据框中随机删除 10 个主题(cca 400 行)。到目前为止,我试过这个:
trial = df.groupby(['Subject_ID']).apply(lambda x: x.sample(10))
但我意识到这个函数从每个 Subject_ID 中随机抽取 10 行,而不是 10 个组/Subject_ID
您可以使用Series.unique
withnumpy.random.choice
随机选择 10 个 ID,然后使用布尔索引isin
从您的DataFrame
:
import numpy as np
exclude_ids = np.random.choice(df['Subject_ID'].unique(), 10)
df_new = df[~df['Subject_ID'].isin(exclude_ids)]