pd.concat([A.iloc[p[:, (0)]].reset_index(drop=True), B.iloc[p[:, (1)]].
    reset_index(drop=True)], axis=1, keys=['A', 'B'])
Fast (vectorized) way to find points in one DF belonging to equally sized rectangles (given by two points) from the second DF