def no_conflict_select(x_data,y_data ,x_s,x_e,y_s,y_e):
    x_data["dk_value"] = 1
    x_id="dk_id"
    x_data[x_id]=x_data.index.values.tolist()
    y_data["dk_value"] = 1
    dk_data = pd.merge(x_data, y_data, on="dk_value", how="left")
    xs_ys_xe = (dk_data[x_s]<= dk_data[y_s]) & (dk_data[y_s] <= dk_data[x_e])
    xs_ye_xe = (dk_data[x_s]<= dk_data[y_e]) & (dk_data[y_e] <= dk_data[x_e])
    ys_xs_ye = (dk_data[y_s]<= dk_data[x_s]) & (dk_data[x_s] <= dk_data[y_e])
    ys_xe_ye = (dk_data[y_s]<= dk_data[x_e]) & (dk_data[x_e] <= dk_data[y_e])
    conflict_list = list(set(dk_data[xs_ys_xe | xs_ye_xe | ys_xe_ye | ys_xs_ye][x_id]))
    mid_df = pd.DataFrame({x_id: conflict_list, "conflict": [1] * len(conflict_list)})
    out_dk = pd.merge(x_data, mid_df, on=x_id, how="left")
    out_dk = out_dk[pd.isnull(out_dk["conflict"])]
    return out_dk
if __name__ == '__main__':
    x_data = pd.DataFrame({"x_id": ["A", "B", "C"], "x_s": [1, 3, 8], "x_e": [3, 5, 9]})
    y_data = pd.DataFrame({"y_id": ["D", "E", "F", "G"], "y_s": [1, 2, 4, 6], "y_e": [2, 4, 6, 7]})
    no_conflict_data=no_conflict_select(x_data,y_data,"x_s","x_e","y_s","y_e")