Выбор ответа Middle merge, join и concat обновлено
concat в цикле
Вопрос
Код в цикле на 50 000 итераций делает df = pd.concat([df, row_df]). Что не так?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Каждая итерация копирует весь DataFrame, время растёт как n². Каждый concat создаёт новый DataFrame и копирует все данные, итог O(n²).
Варианты ответа
- Ничего:
concatоптимизирован под добавление строк в конец - Каждая итерация копирует весь DataFrame, время растёт как n²правильный ответ
concatне сохраняет порядок строк и перемешивает индекс- Нужно заменить на
df.append(row_df), он быстрее в цикле
Разбор
Каждый concat создаёт новый DataFrame и копирует все данные, итог O(n²). Правильно: собрать строки в список (словарей или DataFrame) и один раз сделать pd.DataFrame(list) или pd.concat(list). Порядок concat сохраняет. DataFrame.append удалён в pandas 2.0 и тоже копировал всё.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.