Предполагая, что ваш фрейм данных - это все строки, str.replace должен выполнить трюк без необходимости в регулярных выражениях.
df = df.col1.str.replace('(+):', '_+__', regex=False)
Вы устанавливаете regex = False
здесь, чтобы указать, что вы ищете эти строки как литерал, а не как его регулярное выражение.
Пример
import pandas as pd
import numpy as np
df = pd.DataFrame({'col1': ['OK.1:177788-1000(+):Genus_species', 'OK.1:177788-2000(+):Genus_species']})
Выход:
col1
0 OK.1:177788-1000(+):Genus_species
1 OK.1:177788-2000(+):Genus_species
Тогда используйте
df = df.col1.str.replace('(+):', '_+__', regex=False)
Выход:
col1
0 OK.1:177788-1000_+__Genus_species
1 OK.1:177788-2000_+__Genus_species