Я бы хотел отфильтровать Dataframe. Результирующий информационный фрейм должен содержать все строки, где в любом из ряда столбцов есть любое из слов списка.
Я начал использовать для циклов, но должен быть лучший способ pythonic / pandoni c .
Пример:
# importing pandas
import pandas as pd
# Creating the dataframe with dict of lists
df = pd.DataFrame({'Name': ['Geeks', 'Peter', 'James', 'Jack', 'Lisa'],
'Team': ['Boston', 'Boston', 'Boston', 'Chele', 'Barse'],
'Position': ['PG', 'PG', 'UG', 'PG', 'UG'],
'Number': [3, 4, 7, 11, 5],
'Age': [33, 25, 34, 35, 28],
'Height': ['6-2', '6-4', '5-9', '6-1', '5-8'],
'Weight': [89, 79, 113, 78, 84],
'College': ['MIT', 'MIT', 'MIT', 'Stanford', 'Stanford'],
'Salary': [99999, 99994, 89999, 78889, 87779]},
index =['ind1', 'ind2', 'ind3', 'ind4', 'ind5'])
df1 = df[df['Team'].str.contains("Boston") | df['College'].str.contains('MIT')]
print(df1)
Итак, понятно, как индивидуально фильтровать столбцы, содержащие определенное слово
, далее также понятно, как фильтровать строки по столбцу. содержащий любую из строк списка:
df[df.Name.str.contains('|'.join(search_values ))]
Где search_values содержит список слов или строк.
search_values = ['boston','mike','whatever']
Я ищу короткий путь к коду
#pseudocode
give me a subframe of df where any of the columns 'Name','Position','Team' contains any of the words in search_values
Я знаю, что могу сделать
df[df['Name'].str.contains('|'.join(search_values )) | df['Position'].str.contains('|'.join(search_values )) | df['Team'].contains('|'.join(search_values )) ]
, но если бы у меня было 20 столбцов, это было бы беспорядком из строки кода
любое предложение?
Бонус РЕДАКТИРОВАТЬ: При просмотре списка столбцов, таких как «Имя», «Позиция», «Команда», как включить индекс? прохождение ['index', 'Name', 'Position', 'Team'] не работает.
спасибо.
Я посмотрел на это: https://www.geeksforgeeks.org/get-all-rows-in-a-pandas-dataframe-containing-given-substring/
https://kanoki.org/2019/03/27/pandas-select-rows-by-condition-and-string-operations/
Отфильтровать строки на основе списка строк в Pandas