python - 从 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
解决方案
您可以使用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)]
推荐阅读
- kubernetes - 是否可以为 kubernetes 主机网络 pod 选择内部 IP
- javascript - 将输入值与数组中的 JSON 对象匹配
- asp.net-core - 为什么 Giraffe/AspNetCore + SignalR 依赖注入无法解析 MailboxProcessor 单例?
- java - 如何在 Android 中切换主机
- ruby-on-rails - 无法在 Rspec 中发送带有标头的 put 请求
- ios - IOS/Objective-C:在没有 Storyboard Segue 的情况下可以在模态转换中使用自定义 Segue?
- android - 无法比较微调器选择的字符串值
- latex - 在背面将编译器更改为 XeLeTax 但仍然失败
- reporting-services - SSRS 多列报表分页不正确
- java - 在java中从JSON中删除评论的最快方法?