Выбор ответа Middle Выборка и фильтрация спрашивают часто обновлено
Присваивание по условию
Вопрос
Как правильно поставить discount = 0.1 всем строкам, где amount > 1000?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: df.loc[df.amount 1000, "discount"] = 0.1. Присваивание должно быть одной операцией loc[маска, колонка].
Варианты ответа
df[df.amount > 1000]["discount"] = 0.1df.where(df.amount > 1000)["discount"] = 0.1df["discount"][df.amount > 1000] = 0.1df.loc[df.amount > 1000, "discount"] = 0.1правильный ответ
Разбор
Присваивание должно быть одной операцией loc[маска, колонка]. Варианты df[маска]["discount"] = ... и df["discount"][маска] = ... это цепочное присваивание: сначала создаётся промежуточный объект, потом в него пишут. В pandas 3.0 с Copy-on-Write оно никогда не меняет df (раньше давало SettingWithCopyWarning и работало через раз). where возвращает новый DataFrame, запись в него до df не дойдёт.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.