У меня есть два кадра данных, которые намного больше этого, но они имеют вид:
df1 = pd.DataFrame({'col1': ['a', 'b', 'b', 'c'],
'start': [1, 5, 10, 15],
'end': [4, 9, 14, 19]})
df2 = pd.DataFrame({'col1': ['a', 'b', 'b', 'c'],
'value': [2, 6, 12, 20],
'etc': [1, 2, 3, 4]})
Я хочу объединить их, основываясь на проверке двух вещей в следующем порядке: 1) совпадение col1
,2) что value
находится между start
и end
.Я думал что-то вроде (но первая ==
строка не работает):
if df1.col1 == df2.col1:
if df1.start < df2.value < df1.end:
df1.merge(df2)
Я не знаю, будет ли это проверять все строки в df1 против всех строк в df2, хотя?Желаемый результат для этого примера будет:
dfoutput = pd.DataFrame({'col1': ['a', 'b', 'b'],
'start': [1, 5, 10],
'end': [4, 9, 14],
'value': [2, 6, 12],
'etc': [1, 2, 3]})