Dynami c поиск: Pandas запрос фрейма данных - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь ввести строку (слово или фразу), введенную пользователем, для поиска подстроки в определенном столбце для запроса результатов. Как я могу сделать это динамическим c? т.е. я хочу продолжать добавлять слова в качестве новых запросов, чтобы найти элемент без его определения.

например. если введено - слово1; он возвращает все строки с 'word1' в df ['column']

, а если введено - 'word1 word2 wordn'; он возвращает все строки с запросом, как показано ниже:

x = input("Type to search for item : ")  # input phrase or word
words = x.split(' ')

query = df.loc[(df['Column'].str.contains(words[0]))
           &(df['Column'].str.contains(words[1]))
           &(df['Column'].str.contains(words[n]))
           ]

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Рассмотрим Series.str.contains с использованием регулярного выражения с AND logi c:

words_pattern = r"(" + ")(".join(words) + ")"

sub_df = df.loc[df['char'].str.contains(words_pattern, regex=True)]

В качестве альтернативы для предупреждения при использовании группировки строк регулярных выражений используйте Series.str.extract

words_pattern = r"(" + ")(".join(words) + ")"

res = df['char'].str.extract(words_pattern)
sub_df = df.loc[res.dropna().index]
0 голосов
/ 28 мая 2020

Как насчет

submasks = [df['Column'].str.contains(s) for s in words]
combined = np.vstack(submasks).all(axis=0)
df[combined]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...