python - 如何从数据集中提取 n 个块?
问题描述
我有一个包含 100,000 个样本和 2 个目标的数据集 {Pass, Fail} 我的主要目标是从数据集中随机提取 5 个连续样本的 5 个块(组),目标为“FAIL”。
我的数据集:
i target value
0 Fail 12
1 Fail 12
2 Fail 14
3 Fail 13
4 Fail 8
5 Pass 40
6 Fail 12
7 Fail 7
8 Fail 9
9 Fail 11
10 Fail 19
11 Pass 44
12 Fail 16
13 Fail 4
.........................................
n
对于上述数据集,
List1=[0,1,2,3,4]
List2=[6,7,8,9,10]
可以是正确的结果;但是,应该从整个数据集中随机挑选块。
PS:数据集存储在excel表格中,并使用pandas导入。
解决方案
我会首先确定所有可接受大小的块,然后在该列表中随机选择。以下代码采用 RangeIndex 形式的简单数字索引(编号从 0 到 len-1)。如果索引不同,请使用reset_index
干净的 RangeIndex。
s = pd.Series(np.where(df2.target=='Fail', 1, np.nan), index=df2.index)
ends = np.random.choice(s[s.rolling(5).count()==5].index.values, 5)
ends
Fail
包含 5 个连续行的 5 个随机序列的终止索引df
。
推荐阅读
- php - 将新版本的 PHP 添加到 MAMP
- javascript - 为什么我的去抖动功能在带有钩子的 React 应用程序中不起作用?
- html - 如何使列水平或垂直对齐取决于 Bootstrap 4 中的视口?
- c++ - “默认初始化”(`new C`)和“值初始化”(`new C()`)有什么区别?
- javascript - 如何将phaser3游戏嵌入html
- antrl4 - ANTLR - 我可以让解析器上下文对象类型定义吗?
- java - 如何去除Android Material Design中TextInputLayout下的下划线?
- java - 在java中使用服务器时间更新firestore文档
- arrays - 英语句子hypenation
- javascript - guildMemberAdd 和 guildMemberRemove 嵌入不再发送(Discord.js)