Почему не объединяются датафреймы внутри цикла?

Для простоты - есть два датафрейма пандаса, которые легко объединяются между собой методом merge. Но если эти данные лежат в списке, то при его итерации не получается объединить датафреймы (в реалной задаче есть большой список схожих датафреймов):

введите сюда описание изображения


Ответы (2 шт):

Автор решения: MarianD

Метод .merge() не изменяет датафрейм, на который вы его применили, только возвращает новый датафрейм.

Чтобы сохранить этот новый датафрейм, нужно его присвоить какой-нибудь переменной:

df_merged = con.merge(...)

Так как вы это не сделали, вы его просто выкинули.

Результат вашей последней команды

x.merge(y, how='outer')

т.к. она является последней (единой) в клетке Jupyter ноутбука, изобразится (и потом тоже уничтожится).

Между прочим, в цикле

for i in a_list:

вы пытаетесь сначала сделать x.merge(x, ...) (потому что x является первым элементом списка a_list) - что вы явно не хотите.

→ Ссылка
Автор решения: MarianD

Как это сделать правильно?

a_list = [x, y, z, ...]   # сколько нужно
result = a_list[0]        # первый


for i in a_list[1:]       # для всех остальных
    result = result.merge(i, ...)
→ Ссылка