Als Eingabe Ich habe zwei Datenrahmen:Zusammenführen von zwei Datenrahmen mit Intervalldaten in einem von ihnen
data1 = [{'code':100}, {'code':120}, {'code':110}]
data1 = pd.DataFrame(data1)
code
0 100
1 120
2 110
data2 = [{'category':1, 'l_bound':99, 'r_bound':105},{'category':2, 'l_bound':107, 'r_bound':110},{'category':3, 'l_bound':117, 'r_bound':135}]
data2 = pd.DataFrame(data2)
category l_bound r_bound
0 1 99 105
1 2 107 110
2 3 117 135
I mit zusätzlichen Spalt in dem ersten Datenrahmen als Kategorienummer am Ende des folgende Datenrahmen, erhalten möchte, wenn der code liegt im entsprechenden intervall:
code category
0 100 1
1 120 3
2 110 2
Intervalle sind zufällig und die ursprünglichen Datenrahmen sind ziemlich groß. Looping mit Itertuples ist zu langsam. Irgendwelche pythonischen Lösungen?
reine Python - https://eval.in/928533 – splash58
@AntonvBR ich nicht eng am Beispiel ausgesehen haben, aber das Problem (und Antworten) zwischen den beiden scheinen identisch ... –
** Nützliche Beobachtung **: Die folgenden Lösungen funktionieren möglicherweise nicht, wenn die Daten nicht in einem geeigneten Format vorliegen. Stellen Sie sicher, dass 'data1' und' data2' Integer sind. In einigen Spalten der ursprünglichen Datasets können auch gemischte Formate enthalten sein (z. B. "code": "123a"). Um es loszuwerden, fügen Sie einfach 'data1 = data1 [pd.to_numeric (data1 ['code'], errors = 'coerce') hinzu. Notnull()] data1 ['code'] = pd.to_numeric (data1 ['code ']) ' –