Выбор ответа Senior Производительность и память спрашивают часто обновлено
Copy-on-Write: изменение колонки
Вопрос
Что выведет код в pandas 3.0?
import pandas as pd
df = pd.DataFrame({'a': [1, 2]})
col = df['a']
col.iloc[0] = 100
print(df['a'].tolist())
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: [1, 2]: под Copy-on-Write колонка ведёт себя как копия. В pandas 3.0 Copy-on-Write включён по умолчанию: объект, полученный из DataFrame, при первой записи копирует данные, и исходная таблица не меняется.
Варианты ответа
[100, 2]: колонка это представление исходных данных- Ошибку: изменять колонку, полученную из DataFrame, нельзя
[1, 2]: под Copy-on-Write колонка ведёт себя как копияправильный ответ- Предупреждение
SettingWithCopyWarningи[100, 2]
Разбор
В pandas 3.0 Copy-on-Write включён по умолчанию: объект, полученный из DataFrame, при первой записи копирует данные, и исходная таблица не меняется. В pandas 2.x без CoW вышло бы [100, 2]. Ошибки нет, а SettingWithCopyWarning в 3.0 удалён.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Производительность и память»
- Чем заменить apply(axis=1)
- Когда помогает тип category
- Цепочное присваивание в pandas 3.0
- Обнулить тестовые заказы через loc
- Скидка по категории через map
- Категории сумм через np.select
- Ужать DataFrame: category и downcast
- category теряется при concat