Найти строку в dataframe по условию не первого вхождения
Есть dataframe, в котором один из столбцов строки содержит строку вида
от 3.6.12 до 3.6.14 (Python), от 3.7.0 до 3.7.11 (Python), от 3.8.0 до 3.8.11 (Python)
Мне нужно понять, входит ли в данное перечисление диапазонов версий нужная мне версия. На данный момент пришел к следующей реализации:
(tmp_df - - изначальный датафрейм, target_indexes - датафрейм, с помощью которого в итоге можно обратиться только к нужным строкам изначального фрейма по полученным индексам)
tmp_df= pd.DataFrame({'Версия ПО': ['от 3.6.9 до 3.7.2 (Linux), 1.7 (Linux)',
'от 2.9.1 до 2.9.5 (Python), от 3.6.0 до 3.6.11 (Python), от 3.7.9 до 3.8.1 (Python)'
'от 3.6.12 до 3.6.14 (Python), от 3.7.0 до 3.7.11 (Python), от 3.8.2 до 3.9.11 (Python)'
]
regex = fr'(?i)[а-яА-я ]*([^а-яА-я, ]*)[а-яА-я ]*([^а-яА-я, ]*)[а-яА-я ]*\({lib_name}\)'
lib_version = '3.5.2'
lib_name = 'Python'
target_indexes = tmp_df[tmp_df['Версия ПО'].str.contains(f'({lib_name})', regex=False)][
'Версия ПО'].str.extract(regex)
target_indexes = target_indexes[
target_indexes[0].le(lib_version) & target_indexes[1].ge(lib_version)]
print(tmp_df.loc[target_indexes.index])
Проблема в том, что str.extract() вытаскивает только первое вхождение в строке по регулярке и сравнивает его с заданной версией. Как можно изменить конструкцию, чтобы найти и сравнить все вхождения в строке и запомнить её индекс?