Merge, Join, Concat в Pandas: объединение таблиц

Мы просто и по делу рассказываем про ИИ-инструменты для работы: сравнения, пошаговые гайды, бесплатные альтернативы и реальные сценарии применения. Помогаем выбрать между ChatGPT, Gemini, Claude, локальными моделями и десятками узкоспециализированных сервисов — от дизайна и HR до аналитики и SEO. Меньше хайпа, больше практики и экономии времени каждый день.

pandasmergejoin

При работе с данными в Pandas почти всегда нужно объединять таблицы: подтянуть справочник, склеить данные по строкам или собрать несколько датафреймов в один. Для этого чаще всего используют merge(), join() и concat(). Главное — понимать, что именно вы объединяете.

merge() — объединение по ключам

Это аналог SQL JOIN. Используется, когда есть общие столбцы или ключи.

df1.merge(df2, on='id', how='inner')

Основные параметры:

  • on — имя общего столбца
  • left_on, right_on — если названия ключей отличаются
  • how — тип соединения:
    • inner — только совпадающие строки
    • left — все из левой таблицы
    • right — все из правой
    • outer — все строки из обеих таблиц

Пример:

users.merge(orders, on='user_id', how='left')

Так можно подтянуть заказы к списку пользователей.

join() — удобное объединение по индексу

Чаще применяется, когда ключ уже находится в индексе.

df1.join(df2, how='left')

Если нужно, можно указать столбец:

df1.join(df2.set_index('id'), on='id')

Когда использовать:

  • если работаете с индексами
  • если нужен короткий синтаксис
  • если объединяете несколько таблиц подряд

Важно: join() по сути тоже опирается на механику merge, но удобнее в индексных сценариях.

concat() — склейка по оси

Используется, когда не нужно искать совпадения по ключам, а надо просто соединить объекты.

По строкам:

pd.concat([df1, df2], axis=0)

По столбцам:

pd.concat([df1, df2], axis=1)

Полезные параметры:

  • ignore_index=True — пересоздать индекс
  • keys= — добавить уровень иерархии
  • join='inner' — оставить только общие столбцы

Пример:

pd.concat([jan, feb, mar], ignore_index=True)

Так удобно собирать месячные выгрузки в одну таблицу.

Что выбрать 🤔

  • merge() — если есть ключи и нужна логика SQL JOIN
  • join() — если объединение идёт по индексу
  • concat() — если нужно склеить таблицы по строкам или столбцам без сопоставления ключей

Частые ошибки ⚠️

  • дубли в ключах → неожиданный рост числа строк
  • разные типы ключей (int и str) → merge не сработает как ожидается
  • пропуски после left/outer join — это нормально, если совпадений нет
  • concat() не заменяет merge(): он не связывает записи по смыслу

Практический совет 💡

Перед объединением проверяйте:

df.info()
df['id'].duplicated().sum()

Это помогает быстро найти проблемы с типами и дублями.

Хорошее правило: если думаете в терминах “по какому полю связать?” — нужен merge(). Если “просто склеить” — concat().

📚 В закрепе — мягко рекомендую посмотреть подборку каналов про IT: там полезные ресурсы по Pandas, аналитике данных и Python для практики.

🗣 Подборки каналов
🧠 Каталог ботов и приложений
🗺 Навигация

Читайте так же