我有一个数据帧:
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