Карточка Senior Series, DataFrame и индекс обновлено

Как устроен Copy-on-Write

Вопрос

Как работает Copy-on-Write в pandas 3.0 и почему он не замедляет код?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Выборка или метод возвращает новый объект, который пока делит данные с исходным (ленивая копия). Pandas отслеживает ссылки, и реальное копирование происходит только при первой записи в один из объектов, у которого есть общие данные.

Ответ

Выборка или метод возвращает новый объект, который пока делит данные с исходным (ленивая копия). Pandas отслеживает ссылки, и реальное копирование происходит только при первой записи в один из объектов, у которого есть общие данные. Поэтому цепочки методов без записи не копируют лишнего, а изменение никогда не протекает в другой объект. Следствие: цепочное присваивание не работает, менять нужно через loc одним шагом.

Разбор

Выборка или метод возвращает новый объект, который пока делит данные с исходным (ленивая копия). Pandas отслеживает ссылки, и реальное копирование происходит только при первой записи в один из объектов, у которого есть общие данные. Поэтому цепочки методов без записи не копируют лишнего, а изменение никогда не протекает в другой объект. Следствие: цепочное присваивание не работает, менять нужно через loc одним шагом.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.