Выбор ответа Junior Производительность и память обновлено
Условная колонка без apply
Вопрос
Нужна колонка "big", если amount > 1000, иначе "small". Какой вариант векторный?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: np.where(df["amount"] 1000, "big", "small"). np.where вычисляет маску на всей колонке и выбирает значения векторно. map с лямбдой и списковое включение вызывают Python на каждый элемент, хотя и быстрее apply(axis=1).
Варианты ответа
df.apply(lambda r: "big" if r.amount > 1000 else "small", axis=1)df["amount"].map(lambda x: "big" if x > 1000 else "small")np.where(df["amount"] > 1000, "big", "small")правильный ответ[ "big" if x > 1000 else "small" for x in df["amount"] ]
Разбор
np.where вычисляет маску на всей колонке и выбирает значения векторно. map с лямбдой и списковое включение вызывают Python на каждый элемент, хотя и быстрее apply(axis=1). Для нескольких условий есть np.select, для интервалов pd.cut.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Производительность и память»
- Чем заменить apply(axis=1)
- Когда помогает тип category
- Цепочное присваивание в pandas 3.0
- Обнулить тестовые заказы через loc
- Скидка по категории через map
- Категории сумм через np.select
- Ужать DataFrame: category и downcast
- category теряется при concat