内にあるかどうかを確認:最初の列(範囲の重複なし)によってソート範囲を持つファイルが存在する場合は1つの範囲は、別の
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
私は知っている。これはひどく非効率的なことができ、これまでに以下のため、これを解決するために、より計算効率の高い/より高速な方法があれば、私は思っていたのでした。
より効率的なアルゴリズムはhttps://en.wikipedia.org/wiki/Interval_tree –
で見つかるはずですが、あなたには誤植があるようです: 'start_2 = df_2.iloc [j、0]; stop_2 = df_2.iloc [j、1] 'i'ではなく' j'をインデックスとして使用します。それ以外のところでは、このコードはできるだけ効率的だと思います。 –