【发布时间】:2017-02-01 15:44:26
【问题描述】:
更新 5:
此功能已作为 pandas 20.1 的一部分发布(在我生日那天:])
更新 4:
PR 已合并!
更新 3:
更新 2:
这个问题似乎对re-opening the PR for IntervalIndex in pandas 有所贡献。
更新:
我不再有这个问题,因为我现在实际上正在查询来自 A 和 B 的重叠范围,而不是来自 B 的点,它们属于 A 的范围内,这是一个完整的区间树问题。不过我不会删除这个问题,因为我认为它仍然是一个有效的问题,而且我没有一个好的答案。
问题陈述
我有两个数据框。
在数据帧A 中,两个整数列合在一起表示一个区间。
在数据框B中,一个整数列代表一个位置。
我想做一种连接,以便将点分配给它们所在的每个间隔。
间隔很少但偶尔会重叠。如果一个点落在该重叠范围内,则应将其分配给两个区间。大约一半的点不会落在一个区间内,但几乎每个区间都会在其范围内至少有一个点。
我一直在想什么
我最初打算从 pandas 中转储我的数据,并使用 intervaltree 或 banyan 或者 bx-python 但后来我遇到了这个 gist。事实证明,shoyer 的想法从来没有进入过 pandas,但这让我开始思考——可能在 pandas 中做到这一点,而且因为我希望这段代码尽可能快地运行 python,所以我'宁愿直到最后才将我的数据从熊猫中转储出来。我也觉得 bins 和 pandas cut 函数可以做到这一点,但我是 pandas 的新手,所以我可以使用一些指导!谢谢!
注意事项
可能相关? Pandas DataFrame groupby overlapping intervals of variable length
【问题讨论】:
-
您需要发布您的示例数据框和所需的示例输出
-
如何发布数据框?它又宽又高,我觉得我已经提供了重要的信息。如果您愿意,具体的名称是
A.txStart和A.txEnd用于区间,B.tss用于点。它们都是相当大的整数。 -
发布绝对最小的数据,这将产生一个可以解决您的问题的答案。这意味着您需要使用最少的列创建准确模拟您遇到的情况的假数据。
标签: python pandas interval-tree