Использование переменной в регулярном выражении в Pandas str.contains () - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь выбрать строки в кадре данных, используя функцию pandas str.contains() с регулярным выражением, которое содержит переменную, как показано ниже.

df = pd.DataFrame(["A test Case","Another Testing Case"], columns=list("A"))
variable = "test"
df[df["A"].str.contains(r'\b' + variable + '\b', regex=True, case=False)] #Returns nothing

Хотя приведенное выше ничего не возвращает, следующее возвращаетсоответствующая строка, как и ожидалось

df[df["A"].str.contains(r'\btest\b', regex=True, case=False)] #Returns values as expected

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 25 июля 2019

У меня была точно такая же проблема при разборе 'variable' в str.contains (переменная).

Попробуйте использовать str.contains (variable, regex = False)

Это сработало дляя отлично.

0 голосов
/ 05 декабря 2018

Оба символа границы слова должны быть внутри необработанных строк.Почему бы не использовать какое-то форматирование строк?Конкатенация строк, как правило, не рекомендуется.

df[df["A"].str.contains(fr'\b{variable}\b', regex=True, case=False)] 
# Or, 
# df[df["A"].str.contains(r'\b{}\b'.format(variable), regex=True, case=False)] 

             A
0  A test Case
...