Задание значений в подмножестве Pandas DataFrame (копирование) выполняется медленно

import timeit
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(10, 10))

dft = df[[True, False] * 5]
# df = dft
dft2 = dft.copy()

new_data = np.random.rand(5, 10)

print(timeit.timeit('dft.loc[:, :] = new_data', setup='from __main__ import dft, new_data', number=100))
print(timeit.timeit('dft2.loc[:, :] = new_data', setup='from __main__ import dft2, new_data', number=100))

На моем ноутбуке значения настроек вdft (исходное подмножество) примерно в 160 раз медленнее, чем установка значений вdft2 (глубокая копияdft).

Почему это так?

редактировать: Удалено предположение о прокси-объектах.

Как ц. Кожа предполагает, что это, вероятно, из-за другого пути кода при установке значений для копии (dft) против исходного кадра данных (dft2).

Бонусный вопрос: удаление ссылки на оригинальный DataFramedf (раскомментировавdf = dft линия), сокращает коэффициент скорости примерно до 2 на моем ноутбуке. Есть идеи, почему это так?

Ответы на вопрос(1)

Ваш ответ на вопрос