Wie mehrere Spalten in pandas DataFrame für eine "Intervall"?

Habe ich Folgendes pandas 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
....

So, es ist ein order Spalte umfasst viele Zeilen, die jeweils, und dann einen Bereich/- Intervall von start zu end für jede Zeile. Jede Zeile ist dann gekennzeichnet durch eine bestimmte value (z.B. category1, category2, etc.)

Nun habe ich ein anderes dataframe genannt key_df. Es ist im Grunde das exakt gleiche format:

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
...

Mein Ziel ist es, die key_df dataframe und überprüfen Sie, ob die Intervalle start:end entsprechen den Zeilen in der ursprünglichen dataframe df. Wenn es funktioniert, diese Zeile in df sollte beschriftet sein mit der key_df dataframe ist value Wert.

In unserem Beispiel oben, den dataframe df würde so enden:

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

Dies ist, weil wenn man sich key_df die Zeile

1        1345    1392    category29

mit Intervall 1::1345-1392 fällt in das Intervall 1::1342-1357 im original df. Ebenso die key_df Reihe:

1        1471    1501    category31

entspricht der zweiten Zeile in df:

1        1459    1489    category7    category31

Ich bin mir nicht ganz sicher

(1), wie diese Aufgabe in pandas

(2) wie groß diese effizient in pandas

Könnte man beginnen mit einer if-Anweisung, z.B.

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

aber nicht die Vorteile der dataframe Struktur. Man muss dann überprüfen, indem Sie Intervall, d.h. so etwas wie (df.start =< key_df.start) && (df.end => key_df.end)

Ich bin stecken. Was ist der effizienteste Weg, um ein match mehrere Spalten in eine "Intervall" in pandas? (Erstellen einer neuen Spalte, wenn diese Bedingung erfüllt ist, ist dann einfach)

Schreibe einen Kommentar