查找位于其他两个DataFrame的索引值之间的DataFrame的索引值

时间:2019-02-05 22:08:53

标签: python pandas group-by data-manipulation

我有一个数据框:

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

我根据某种条件过滤了数据框,并获得了这两个数据框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 

1 个答案:

答案 0 :(得分:2)

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