Фильтр фрейма данных Pandas для предложений ‘и’ и ‘или’

#pandas #dataframe #search #filter

#pandas #фрейм данных #Поиск #Фильтр

Вопрос:

У меня есть столбец фрейма данных pandas, и мне нужно выполнить ‘И’ поиск или ‘ИЛИ’ поиск на основе необходимости. Элементы критериев поиска доступны в массиве, и длина этого массива поиска может меняться во время выполнения. Пожалуйста, посмотрите код ниже:

 import pandas as pd 
 
data = [['Adam Smith', 10], ['Dam Joshua', 15], ['Josh Willism', 14], ['Tim Robins', 14]] 

df = pd.DataFrame(data, columns = ['Name', 'Age']) 

df 

search = ['dam', 'Josh']

# want to use or condition - expected to see 3 rows
emp = df[df['Name'].str.contains('|'.join(search), case=False)]

# want to use and condition expect to see 1 row i.e. Dam Joshua
emp = df[df['Name'].str.contains('amp;'.join(search), case=False)]
  

Предложение OR, похоже, работает для меня, и я попытался использовать amp; для критериев AND, но безуспешно.

Пожалуйста, подскажите, как python делает это эффективно. Заранее спасибо.

Ответ №1:

Вы можете использовать строку с contains

 emp = df[df['Name'].str.contains(r'^(?=.*dam)(?=.*Josh)')]