Для или logi c вы можете создать один шаблон, объединив слова с |
. Сохраните ваши 10-20 слов в списке, тогда '|'.join(that_list)
.
import pandas as pd
import numpy as np
df = pd.DataFrame({'col1': ['foo', 'bar', 'baz', 'foobar', 'boo']})
words = ['foo', 'bar']
df['foo_OR_bar'] = df['col1'].str.contains('|'.join(words))
# col1 foo_OR_bar
#0 foo True
#1 bar True
#2 baz False
#3 foobar True
#4 boo False
#To slice by that Boolean Series
df1 = df.loc[df['col1'].str.contains('|'.join(words))]
Если ваши присоединяющиеся логи c равны и , тогда мы можем использовать np.logical_and.reduce
с составление списков для сохранения компактности.
df['foo_AND_bar'] = np.logical_and.reduce([df.col1.str.contains(w) for w in words])
# col1 foo_OR_bar foo_AND_bar
#0 foo True False
#1 bar True False
#2 baz False False
#3 foobar True True
#4 boo False False