Ответ 1
Это не совсем новый вопрос о SO. Этот и этот являются связанными сообщениями. Это ссылка на текущие документы, которая объясняет это.
Комментарии от @c.leather находятся на правильном пути. Проблема в том, что dft
- это представление, а не копия фрейма данных df
, как описано в связанных статьях. Но pandas не может знать, действительно ли это или нет копия, и если операция безопасна или нет, и, как таковая, выполняется много проверок, чтобы гарантировать безопасное выполнение задания, и этого можно было бы избежать просто сделав копию.
Это актуальная проблема, и есть целая дискуссия на Github. Я видел много предложений, которые мне больше всего нравятся, поскольку документы должны поощрять идиому df[[True,False] * 5].copy()
, можно назвать ее фрагментом и идиомой копирования.
Я не смог найти точные проверки, и по проблеме github этот нюанс производительности упоминается только через некоторые твиты, которые некоторые разработчики отметили в поведении. Возможно, кто-то, кто больше участвует в разработке pandas, может добавить еще несколько данных.