如果有一个按第一列排序的区间文件(没有重叠区间):
1 10
12 15
18 19
另一个示例,按第一列排序(可能有重叠):
1 5
2 10
12 13
13 20
我希望确定第二个文件中每一行(范围)是否与第一个文件中的任何范围相交。到目前为止,我已经做了以下工作:
df_1 = pd.read_csv('range1.txt',sep=' ')
df_2 = pd.read_csv('range2.txt',sep=' ')
for i in xrange(len(df_1)):
start_1 = df_1.iloc[i,0]
stop_1 = df_1.iloc[i, 1]
for j in xrange(len(df_2)):
start_2 = df_2.iloc[j,0]
stop_2 = df_2.iloc[j, 1]
if start_2 > stop_1:
break
elif stop_2 < start_1:
continue
else:
# add ranges from second file to list
我知道这可能非常低效,因此我想知道是否有更加计算有效/更快的方法来解决这个问题。
j
作为索引而不是i
来设置start_2 = df_2.iloc[j, 0]; stop_2 = df_2.iloc[j, 1]
。除此之外,我认为这段代码已经尽可能地高效了。 - Jon McClung