python3とpandasを使っています。
df1,df2の2つのDataframeのうち同じIDの人物の日付を比較し、期間重複がある行のIDを取り出したいです。
実際には10万行ほどあります。

data1 = [[1, "2010-01-01", "2010-01-20"], [1, "2010-03-20", "2010-03-30"],
        [2, "2010-02-01", "2010-04-20"], [3, "2010-06-10", "2010-06-15"],
        [3, "2010-06-20", "2010-06-30"], [3, "2010-07-10", "2010-06-20"]]

data2 = [[1, "2010-01-15", "2010-01-30"], [1, "2010-04-20", "2010-04-30"],
        [2, "2010-05-01", "2010-05-10"], [2, "2010-05-20", "2010-05-25"],
        [3, "2010-02-01", "2010-02-15"], [3, "2010-06-15", "2010-06-25"]]

columns1 = ["ID", "start_date", "end_date"]

df1 = pd.DataFrame(data=data1,columns=columns)
df2 = pd.DataFrame(data=data2,columns=columns)

これをIDで比較して、下記のようなリストがほしいです。

result_list = [1,3]


result_list = []
for index,row1 in df1.iterrows():
    if not row1["ID"] in result_list:
        for index,row2 in df2.iterrows():
            if row1["ID"] == row2["ID"] and row2["start_date"] <= row1["end_date"] and row2["end_date"] >= row1["start_date"]:
                result_list.append(row1["ID"])
                break
result_list = list(set(result_list))
result_list

試行錯誤して,求める結果を得ることができましたが
効率が悪いような気がしてなりません…多重for文を書かずに済む方法はないものでしょうか.
アドバイス宜しくお願い致します.