Найти значения индекса DataFrame, которые находятся между значениями индекса двух других DataFrame - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть фрейм данных:

Index  Id  Event
1       1    A
2       1    B 
3       1    A
4       1    B 
5       1    A
6       1    B 
7       1    A
8       1    B 
9       1    A
10      1    B 
11      1    A

Я фильтрую фрейм данных на основе некоторого условия и получил эти 2 фрейма данных: df2

Index  Id  Event
4       1    B 
9       1    A 

и df3

Index  Id  Event
7       1    A
11      1    A

Я хочу найти строки, которые лежат между индексом как фрейма данных, так и для каждого идентификатора.

 Index  Id  Event
 5       1    A
 6       1    B 
 10      1    B 

1 Ответ

0 голосов
/ 06 февраля 2019

Вы можете создать IntervalIndex и эффективно запросить его.

# Setup - "Index" is a column(!).
df

    Index  Id Event
0       1   1     A
1       2   1     B
2       3   1     A
3       4   1     B
4       5   1     A
5       6   1     B
6       7   1     A
7       8   1     B
8       9   1     A
9      10   1     B
10     11   1     A

idx = pd.IntervalIndex.from_arrays(df1['Index'], df2['Index'], closed='neither')  
df[idx.get_indexer(df['Index']) > -1]

   Index  Id Event
4      5   1     A
5      6   1     B
9     10   1     B
...