Как получить n индексных номеров до / перед определенной меткой? - PullRequest
2 голосов
/ 21 июня 2019

У меня есть набор данных, который выглядит как показано ниже;Моя цель состоит в том, чтобы создать список, содержащий три индексных числа перед 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]

РЕДАКТИРОВАТЬ: эта ситуация повторяетсямного раз через мой набор данных.В некоторых случаях допустимый диапазон может быть только двумя выборками, как в следующем примере:

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

Ответы [ 2 ]

4 голосов
/ 21 июня 2019

вы можете использовать:

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

Int64Index([3, 4, 5], dtype='int64', name='i')
2 голосов
/ 21 июня 2019

Вы можете использовать .loc:

index = df.loc[df['Label']=='Accepted', 'Label'].first_valid_index()
[index - i for i in range(1, 4)]
>> [5, 4, 3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...