首页 > 解决方案 > 如何在特定标签之前/之前获取 n 个索引号?

问题描述

我有一个如下所示的数据集;我的目标是创建一个包含之前三个索引号的列表Accepted

i       Label         value
0       Rejected       12
1       Rejected       10
2       Rejected       22
3       Rejected       32
4       Rejected       25
5       Rejected       15
6       Accepted       42
7       Accepted       52
8       Accepted       17
9       Accepted       8
10      Accepted       10
11      Rejected       21
12      Rejected       32
13      Rejected       12

这个例子的结果应该是:

list = [3,4,5]

编辑:这种情况在我的数据集中重复了很多次。在某些情况下,Accepted 范围只能是两个样本,如下例所示:

i       Label         value
0       Rejected       12
1       Rejected       10
2       Rejected       22
3       Rejected       32
4       Rejected       25
5       Rejected       15
6       Accepted       42
7       Accepted       52
8       Rejected       17
9       Rejected       8
10      Rejected       10
11      Rejected       21
12      Rejected       32
13      Rejected       12

标签: pythonarrayspandaslistindexing

解决方案


您可以使用:

df[df.Label.ne('Accepted')&df.Label.shift(-3).eq('Accepted')].index

Int64Index([3, 4, 5], dtype='int64', name='i')

推荐阅读