更新5:
这个功能已经作为pandas 20.1的一部分发布了(在我的生日上:])
更新4:
PR已合并!
更新3:
更新2:
看起来这个问题可能有助于重新打开pandas中IntervalIndex的PR。
更新:
我不再遇到这个问题,因为我现在实际上是从A
和B
查询重叠范围,而不是从B
中落在A
范围内的点,这是一个完整的区间树问题。虽然我没有一个好的答案,但我不会删除这个问题,因为我认为它仍然是一个有效的问题。
问题陈述
我有两个数据帧。
在数据框A
中,两个整数列组合在一起表示一个区间。在数据框
B
中,一个整数列表示一个位置。我想进行一种类似于连接的操作,以便将每个点分配到其所属的区间中。
区间很少但偶尔重叠。如果一个点落在重叠区域内,它应该被分配到两个区间中。大约一半的点不会落在区间内,但几乎每个区间都至少有一个点落在其范围内。
我的想法
我最初打算从pandas中导出我的数据,然后使用intervaltree或banyan或者可能是bx-python,但后来我发现了这个gist。原来shoyer在里面提出的想法从未被纳入到pandas中,但这让我想到了——可能可以在pandas内部完成这个任务,而且由于我希望这段代码尽可能快地运行,所以我不想在最后一刻才从pandas中导出数据。我也有一种感觉,这可以通过bins
和pandas的cut
函数实现,但我对pandas完全是新手,所以我需要一些指导!谢谢!
A.txStart
和A.txEnd
表示区间,B.tss
表示点。它们都是相当大的整数。 - Alex Lenail