我有两个pandas数据帧:dataframe1
和{
mydataframe1
Out[15]:
Start End
100 200
300 450
500 700
mydataframe2
Out[16]:
Start End Value
0 400 0
401 499 -1
500 1000 1
1001 1698 1
每行对应一个段(起始-结束)。 对于dataframe1中的每个段,我想根据分配给dataframe2中的段的值来分配一个值。在
例如:
dataframe1100 200
中的第一个段包含在dataframe20 400
的第一个段中,然后我应该分配值0
dataframe1中的第二个段300 450
包含在dataframe2的第一个0 400
和第二个401 499
段中。在这种情况下,我需要将这些段分成2段并分配相应的2个值。即300 400 -> value 0
和{
最后的dataframe1应该是
^{pr2}$我希望我是克莱尔…你能帮我吗?在
我怀疑有没有熊猫的方法可以直接解决这个问题。 你必须手动计算交点才能得到你想要的结果。intervaltree库至少使区间重叠计算更简单、更有效。在
IntervalTree.search()
返回与提供的间隔重叠但不计算其交集的(完整)间隔。这就是为什么我还要应用我定义的intersect()
函数。在结果和你所追求的完全一样。在
下面是一个使用NCLS库的答案。它不进行拆分,而是回答标题中的问题,而且速度非常快。在
设置:
执行:
^{pr2}$相关问题 更多 >
编程相关推荐