#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
с пользовательской функцией