首页 > 解决方案 > 查找位于其他两个 DataFrame 的索引值之间的 DataFrame 的索引值

问题描述

我有一个数据框:

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 

标签: pythonpandasgroup-bydata-manipulation

解决方案


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

推荐阅读