python - 如何从数据集中提取n个 block ?

标签 python pandas indexing chunks

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

相关文章:

python - Pandas reshape 柱形

python - Pandas :str.contains 使用正则表达式

sql - 如何确保postgresql表中只有一列不为空

indexing - 单个字段的 Elasticsearch 多个分析器

algorithm - 像 Voidtools 的 Everything 这样的软件如何在不到一秒的时间内索引超过 10 万个文件?

python - 如何从n个列表中形成所有可能的组合

当时间转换为 timedelta64 时,Python matplotlib.pyplot 正在绘制不同的图形

python - 使用 numpy 读取自定义格式的日期时间

python - 运行 docker 基础镜像时/bin/sh python not find 错误

python - Pandas get_dummies 为同一特征生成多个列