РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
393 of 687 menu

Функция merge

Функция merge применяется для объединения двух таблиц DataFrame по общему ключу или нескольким ключам. Она поддерживает различные типы соединений: внутреннее, левое, правое и внешнее, аналогично SQL-запросам. В отличие от concat, merge ориентирована на объединение по значениям столбцов.

Синтаксис

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, suffixes=('_x', '_y'))

Пример

Давайте объединим две таблицы по общему столбцу 'a':

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3, 4], 'b': [10, 20, 30, 40] }) df2 = pd.DataFrame({ 'a': [1, 2, 5, 6], 'c': [100, 200, 500, 600] }) res = pd.merge(df1, df2, on='a') print(res)

Результат выполнения кода:

a b c 0 1 10 100 1 2 20 200

В результате получились только строки с совпадающими значениями в столбце 'a' (внутреннее соединение по умолчанию).

Пример

Выполним левое соединение, чтобы сохранить все строки из левой таблицы:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3, 4], 'b': [10, 20, 30, 40] }) df2 = pd.DataFrame({ 'a': [1, 2, 5, 6], 'c': [100, 200, 500, 600] }) res = pd.merge(df1, df2, on='a', how='left') print(res)

Результат выполнения кода:

a b c 0 1 10 100.0 1 2 20 200.0 2 3 30 NaN 3 4 40 NaN

В левом соединении сохраняются все строки из левой таблицы, а для отсутствующих значений из правой подставляется NaN.

Пример

Выполним правое соединение:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3, 4], 'b': [10, 20, 30, 40] }) df2 = pd.DataFrame({ 'a': [1, 2, 5, 6], 'c': [100, 200, 500, 600] }) res = pd.merge(df1, df2, on='a', how='right') print(res)

Результат выполнения кода:

a b c 0 1 10.0 100 1 2 20.0 200 2 5 NaN 500 3 6 NaN 600

В правом соединении сохраняются все строки из правой таблицы, а для отсутствующих значений из левой подставляется NaN.

Пример

Выполним внешнее соединение, которое сохраняет все строки из обеих таблиц:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3, 4], 'b': [10, 20, 30, 40] }) df2 = pd.DataFrame({ 'a': [1, 2, 5, 6], 'c': [100, 200, 500, 600] }) res = pd.merge(df1, df2, on='a', how='outer') print(res)

Результат выполнения кода:

a b c 0 1 10.0 100.0 1 2 20.0 200.0 2 3 30.0 NaN 3 4 40.0 NaN 4 5 NaN 500.0 5 6 NaN 600.0

Внешнее соединение содержит все строки из обеих таблиц, а недостающие значения заполняются NaN.

Пример

Объединим таблицы по ключам с разными именами столбцов:

import pandas as pd df1 = pd.DataFrame({ 'key1': [1, 2, 3, 4], 'b': [10, 20, 30, 40] }) df2 = pd.DataFrame({ 'key2': [1, 2, 5, 6], 'c': [100, 200, 500, 600] }) res = pd.merge(df1, df2, left_on='key1', right_on='key2') print(res)

Результат выполнения кода:

key1 b key2 c 0 1 10 1 100 1 2 20 2 200

Параметры left_on и right_on позволяют указать разные столбцы для соединения.

Пример

Изменим суффиксы для столбцов с одинаковыми именами:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2], 'b': [10, 20] }) df2 = pd.DataFrame({ 'a': [1, 2], 'b': [100, 200] }) res = pd.merge(df1, df2, on='a', suffixes=('_left', '_right')) print(res)

Результат выполнения кода:

a b_left b_right 0 1 10 100 1 2 20 200

Суффиксы помогают различать столбцы с одинаковыми именами из разных таблиц.

Смотрите также

  • функция concat,
    которая объединяет таблицы по строкам или столбцам
  • функция merge_ordered,
    которая выполняет упорядоченное объединение таблиц
  • функция merge_asof,
    которая объединяет таблицы по ближайшим ключам
  • метод join,
    который объединяет таблицы по индексам
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить