#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)')]