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

Функция merge_ordered

Функция merge_ordered в модуле Pandas выполняет объединение двух таблиц DataFrame с сохранением порядка сортировки по ключевым столбцам. В отличие от обычного merge, эта функция предназначена для работы с временными рядами и другими упорядоченными данными. Она позволяет заполнять пропуски значениями с помощью параметра fill_method, что особенно полезно при работе с пропущенными значениями в отсортированных наборах данных.

Основные параметры функции:

  • left и right - таблицы DataFrame для объединения
  • on - столбец или список столбцов для объединения (если не указан, используется пересечение имён столбцов)
  • left_on и right_on - столбцы для объединения из левой и правой таблицы соответственно
  • left_by и right_by - столбцы для группировки перед объединением
  • fill_method - метод заполнения пропусков ('ffill', 'bfill' или None)
  • suffixes - суффиксы для одноимённых столбцов (по умолчанию ('_x', '_y'))
  • how - тип объединения ('left', 'right', 'outer', 'inner'; по умолчанию 'outer')

Синтаксис

pd.merge_ordered(left, right, on=None, left_on=None, right_on=None, left_by=None, right_by=None, fill_method=None, suffixes=('_x', '_y'), how='outer')

Пример

Выполним простое упорядоченное объединение двух таблиц с общим столбцом:

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

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

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

Пример

Используем метод заполнения пропусков ffill для заполнения отсутствующих значений:

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

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

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

Пример

Объединим таблицы с разными именами ключевых столбцов, используя left_on и right_on:

import pandas as pd df1 = pd.DataFrame({ 'key_left': [1, 2, 3, 4], 'b': [10, 20, 30, 40] }) df2 = pd.DataFrame({ 'key_right': [2, 3, 5, 6], 'c': [100, 200, 300, 400] }) res = pd.merge_ordered(df1, df2, left_on='key_left', right_on='key_right', fill_method='bfill') print(res)

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

key_left b key_right c 0 1 10.0 NaN NaN 1 2 20.0 2.0 100.0 2 3 30.0 3.0 200.0 3 4 40.0 NaN 300.0 4 5 NaN 5.0 300.0 5 6 NaN 6.0 400.0

Пример

Выполним объединение с группировкой по дополнительным столбцам с помощью параметра left_by:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3, 1, 2, 3], 'group': ['x', 'x', 'x', 'y', 'y', 'y'], 'b': [10, 20, 30, 40, 50, 60] }) df2 = pd.DataFrame({ 'a': [2, 3, 1, 2, 3], 'group': ['x', 'x', 'y', 'y', 'y'], 'c': [100, 200, 300, 400, 500] }) res = pd.merge_ordered(df1, df2, on='a', left_by='group', fill_method='ffill') print(res)

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

a group b c 0 1 x 10.0 NaN 1 2 x 20.0 100.0 2 3 x 30.0 200.0 3 1 y 40.0 300.0 4 2 y 50.0 400.0 5 3 y 60.0 500.0

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

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