Как сопоставить несколько столбцов в панде DataFrame для «интервала»?

У меня есть следующие панды DataFrame:

import pandas as pd
df = pd.DataFrame('filename.csv')
print(df)

order    start    end    value    
1        1342    1357    category1
1        1459    1489    category7
1        1572    1601    category23
1        1587    1599    category2
1        1591    1639    category1
....
15        792     813    category13
15        892     913    category5
....

Итак, естьorder столбец включает в себя много строк каждая, а затем диапазон / интервал отstart вend для каждого ряда. Каждая строка затем помечается определеннымvalue (например, категория 1, категория 2 и т. д.)

Теперь у меня есть еще один датафреймkey_df, Это в основном точно такой же формат:

import pandas as pd
key_df = pd.DataFrame(...)
print(key_df)

order    start    end    value    
1        1284    1299    category4
1        1297    1309    category9
1        1312    1369    category3
1        1345    1392    category29
1        1371    1383    category31
....
1        1471    1501    category31
...

Моя цель - взятьkey_df фрейм данных и проверьте, есть ли интервалыstart:end сопоставить любую из строк в исходном кадре данныхdf, Если это так, эта строка вdf должны быть помечены сkey_df dataframe-хvalue значение.

В нашем примере выше, фрейм данныхdf в конечном итоге так:

order    start    end    value        key_value
1        1342    1357    category1    category29
1        1459    1489    category7    category31
....

Это потому, что если вы посмотрите наkey_df, ряд

1        1345    1392    category29

с интервалом1::1345-1392 падает в интервале1::1342-1357 в оригиналеdf, Аналогичноkey_df строка:

1        1471    1501    category31

соответствует второму ряду вdf:

1        1459    1489    category7    category31

Я не совсем уверен

(1) как выполнить эту задачу в пандах

(2) как эффективно масштабировать это в пандах

Можно начать с утверждения if, например,

if df.order == key_df.order:
    # now check intervals...somehow

но это не использует структуру данных. Затем нужно проверить по интервалу, то есть что-то вроде(df.start =< key_df.start) && (df.end => key_df.end)

Я застрял. Каков наиболее эффективный способ сопоставления нескольких столбцов в «интервале» в пандах? (Создание нового столбца, если выполняется это условие, является простым)

Ответы на вопрос(1)

Ваш ответ на вопрос