Фильтровать строки в df на основе количества вхождений строк

#python #pandas #data-manipulation

#python #pandas #манипулирование данными

Вопрос:

Я хотел бы фильтровать строки в df при условии, что строка содержит упоминания о 2 строках в длинном списке строк. У меня возникли проблемы с указанием количества вхождений. Вот мой код до сих пор:

 brands = ["a", "b", "c"]
df[df.Column.str.contains('|'.join(brands), re.IGNORECASE, regex=True, na=False)]
  

Комментарии:

1. df.column.str.isin(brands) сделает свое дело. Способ проверки списка элементов — использовать isin(name_of_list)

Ответ №1:

Возможно, используя count вместо contains :

 df = pd.DataFrame({'Column':['ab','ABx','axy']})

df[df.Column.str.count('|'.join(brands), re.IGNORECASE, na=False)>=2]
  

Вывод:

   Column
0     ab
1    ABx
  

Ответ №2:

Вот пример проверки. Это то, что вы пытаетесь сделать?

 import pandas as pd
df = pd.DataFrame({'Test':['a','b','cat','dog']})
print (df)
df['check']= df['Test'].isin(['a','b','c'])
print (df)
  

Это приведет к:

   Test  check
0    a   True
1    b   True
2  cat  False
3  dog  False