Как я могу изменить вектор строк, содержащих ключевое слово?

#python #pandas

#python #панды

Вопрос:

У меня есть фрейм данных с именем df2, который выглядит следующим образом: введите описание изображения здесь

И я хочу заменить все имена моделей, которые содержат строку «ZOE» или другое ключевое слово, просто «ZOE», учитывая, что это марка «RENAULT» или другая марка. Итак, например, я хочу, чтобы ZOE DYNMAIQUE включал АВТО -> АВТО, и если модель не содержит строки с символами «ZOE», я хочу, чтобы она сохранила свое имя модели.

Я новичок в python, и я безуспешно пробовал приведенный ниже код.

 df2['Model'] = df2['Model'].apply(lambda x: 'ZOE' if df1['Make']df2['Make'] == 'RENAULT' amp; df2['Model'].str.contains('ZOE') else df2['Model'])

   
 

Ошибка, которую я получаю, «другое» должно быть pandas.NA или bool. Вместо этого получил str.
Был бы очень признателен за любую помощь или указания на то, где я ошибаюсь.
Спасибо!

Комментарии:

1. Добро пожаловать в StackOverflow! Один вопрос: вы используете комбинацию df1 и df2 , это правильно? Мне это кажется неправильным

2. Привет 🙂 Да, моя ошибка, я неправильно ввел его в stackoverflow. Теперь я отредактировал его в stackoverflow. Все они должны быть df2

3. Не уверен, но похоже, что вы x нигде не используете свой лямбда-код. Попробуйте заменить df2 на x ?

Ответ №1:

Прежде всего, поскольку вам нужны оба столбца ‘Model’ и ‘Make’ в вас lambda , вам нужно применить лямбда ко всем df2 (или, по крайней мере, к df2[['Model', 'Make']] . Кроме того, вы хотите выполнять цикл по строкам фреймов данных, поэтому вам нужно передать аргумент axis = 1 в apply (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas .DataFrame.apply.html ). Затем, как предложено в комментариях, для доступа к содержимому строк вы должны использовать x and not df2 . Итак (после еще нескольких изменений) я бы попробовал что-то вроде этого:

 df2['Model'] = df2.apply(lambda x: 'ZOE' if (x['Make'] == 'RENAULT') amp; ('ZOE' in x['Model']) else x['Model'], axis=1)