pandas: вывести все слова в которых есть определённая буква?
Есть некий Dataframe с названиями. По условию задачи необходимо написать функцию, которая должна в названии найти заданную букву и вывести в консоль все названия в которых эта буква есть.
Функция на вход должна в качестве аргументов принимать Dataframe и букву.
Пока написала только функцию, которая отфильтровала Dataframe и вывела индекс буквы в слове. Не пойму как теперь полученные индексы превратить в слова.
Метод find() использовать обязательно.
Мой код:
def game_name(df, letter):
letter = letter.lower()
var = df_games['Name'].str.find(letter)
return var
game_name(df_games, 'c')
Ответы (1 шт):
Переводим слова в серии df['Name']
в нижний регистр, затем ищем в ней букву тоже в нижнем регистре. Потом формируем булев массива путем сравнения индекса найденной буквы с -1 (не найдено) .gt(-1)
: если индекс больше -1, то True, иначе False. Фильтруем фрейм df[...]
с использованием булева массива и возвращаем результат из функции .
def game_name(df, letter):
return df[df['Name'].str.lower().str.find(letter.lower()).gt(-1)]
df_games = pd.DataFrame({'Name': ['Mario', 'Witcher', 'Diablo', 'Crysis', 'Cuphead']})
print(game_name(df_games, 'c'))
Name
1 Witcher
3 Crysis
4 Cuphead
Дополнительно.
.find()
не самый удобный метод для этой функции, лучше использовать .str.contains()
:
return df[df['Name'].str.contains(letter, case=False)]