我有一个包含 100,000 个样本和 2 个目标的数据集{通过,失败} 我的主要目标是从数据集中随机提取 5 个具有 5 个连续样本且目标为“FAIL”的 block (组)。
我的数据集:
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
对于上述数据集,
列表1=[0,1,2,3,4]
列表2=[6,7,8,9,10]
可以是正确的结果;但是,应该从整个数据集中随机选取 block 。
P.S:数据集存储在 Excel 工作表中并使用 pandas 导入。
最佳答案
我会首先识别所有可接受大小的 block ,然后在该列表中随机选择。以下代码假定 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
包含 df
中 5 个连续 Fail
行的 5 个随机序列的终止索引。
关于python - 如何从数据集中提取n个 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56730763/