Использование numpy для содержимого и точного условия соответствия

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

Попытка создать новый фрейм данных с условием: если column1 != «uuu» и column2 содержат «yes», то новый столбец получает значение «yes». Если приведенное выше не соответствует, получает значение «no_match»

Пример:

введите описание изображения здесь

Мой код пока:

 df['new_column'] = pd.np.where(df.column2.str.contains('yes') amp; np.where(df['column1']) != 'uuu', 'yes', 'no')
  

Что я здесь делаю не так?

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

1. пожалуйста, скопируйте и вставьте данные в виде текста. Пожалуйста, никаких изображений

2. np.where(df['column1']) != 'uuu' не имеет смысла. Вы хотите проверить df['column1']) != 'uuu' , проверьте в документах, что np.where для

Ответ №1:

Используйте только один np.where со связанными условиями с помощью amp; :

 m1 = df.column2.str.contains('yes')
m2  = (df['column1'] != 'uuu')
df['new_column'] = pd.np.where(m1 amp; m2, 'yes', 'no match')
  

Ответ №2:

Что-то вроде:

 def myFunc(row):
   if row['column1'] != 'uuu' and row['column2'] == 'yes':
       return 'yes'
   else:
       return 'no_match'

df['new_column'] = df.apply(myFunc, axis=1)
  

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

1. Возможно, OP предпочел бы вместо этого узнать, что не так с его текущим подходом, который с некоторым исправлением намного быстрее, чем apply с пользовательской функцией