查找位于其他两个数据帧的索引值之间的数据帧的索引值



我有一个数据帧:

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

我想找到位于两个数据帧的索引和每个 ID 之间的行。

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

您可以构造一个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

最新更新