首页 > 解决方案 > 从 pandas 数据框中随机删除 n 组

问题描述

我有一个 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

标签: pythonpandasrandomdrop

解决方案


您可以使用Series.uniquewithnumpy.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)]

推荐阅读