Spec-Zone.ru › pandas 0.24

pandas.DataFrame.merge

DataFrame.merge(right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None) [source]

Объединение DataFrame или именованных Series-объектов с помощью соединения в стиле базы данных.

Объединение выполняется по столбцам или индексам. Если объединение выполняется по столбцам, индексы DataFrame будут проигнорированы. В противном случае, если объединение выполняется по индексам или индексам со столбцом или столбцами, индекс будет передан.

Параметры:
right : DataFrame or named Series

Объект для объединения.

how : {‘left’, ‘right’, ‘outer’, ‘inner’}, default ‘inner’

Тип объединения.

  • left: использовать только ключи из левой таблицы, аналогично левому внешнему соединению в SQL; сохранить порядок ключей.
  • right: использовать только ключи из правой таблицы, аналогично правому внешнему соединению в SQL; сохранить порядок ключей.
  • outer: использовать объединение ключей из обеих таблиц, аналогично полному внешнему соединению в SQL; отсортировать ключи лексикографически.
  • inner: использовать пересечение ключей из обеих таблиц, аналогично внутреннему соединению в SQL; сохранить порядок левых ключей.
on : label or list

Имена столбцов или уровней индексов для объединения. Они должны быть найдены в обоих DataFrame. Если on равно None и объединение не выполняется по индексам, по умолчанию используется пересечение столбцов в обоих DataFrame.

left_on : label or list, or array-like

Имена столбцов или уровней индексов для объединения в левом DataFrame. Также может быть массивом или списком массивов длины левого DataFrame. Эти массивы обрабатываются так, как если бы они были столбцами.

right_on : label or list, or array-like

Имена столбцов или уровней индексов для объединения в правом DataFrame. Также может быть массивом или списком массивов длины правого DataFrame. Эти массивы обрабатываются так, как если бы они были столбцами.

left_index : bool, default False

Использовать индекс из левого DataFrame в качестве ключа(ей) объединения. Если это MultiIndex, количество ключей в другом DataFrame (либо индекс, либо количество столбцов) должно соответствовать количеству уровней.

right_index : bool, default False

Использовать индекс из правого DataFrame в качестве ключа объединения. Ограничения аналогичны left_index.

sort : bool, default False

Отсортировать ключи объединения лексикографически в результирующем DataFrame. Если False, порядок ключей объединения зависит от типа объединения (ключевое слово how).

suffixes : tuple of (str, str), default (‘_x’, ‘_y’)

Суффикс, применяемый к совпадающим именам столбцов в левой и правой частях соответственно. Для повышения исключения при перекрытии столбцов используйте (False, False).

copy : bool, default True

Если False, избегать копирования, если это возможно.

indicator : bool or str, default False

Если True, добавляет столбец в результирующий DataFrame, называемый «_merge», содержащий информацию о источнике каждой строки. Если строка, столбец с информацией о источнике каждой строки будет добавлен в результирующий DataFrame, и столбец будет назван значением строки. Информационный столбец имеет тип Categorical и принимает значения «left_only» для наблюдений, ключ объединения которых встречается только в левом DataFrame, «right_only» для наблюдений, ключ объединения которых встречается только в правом DataFrame, и «both», если ключ объединения наблюдения встречается в обоих.

validate : str, optional

Если указано, проверяет, является ли объединение указанного типа.

  • “one_to_one” или “1:1”: проверяет, являются ли ключи объединения уникальными в левом и правом наборах данных.
  • “one_to_many” или “1:m”: проверяет, являются ли ключи объединения уникальными в левом наборе данных.
  • “many_to_one” или “m:1”: проверяет, являются ли ключи объединения уникальными в правом наборе данных.
  • “many_to_many” или “m:m”: разрешено, но не приводит к проверкам.

Новое в версии 0.21.0.

Возвращаемое значение:
DataFrame

DataFrame объединённых объектов.

См. также

merge_ordered
Объединение с необязательным заполнением/интерполяцией.
merge_asof
Объединение по ближайшим ключам.
DataFrame.join
Аналогичный метод с использованием индексов.

Примечания

Поддержка указания уровней индексов в качестве on, left_on, и right_on параметров была добавлена в версии 0.23.0. Поддержка объединения именованных Series-объектов была добавлена в версии 0.24.0

Примеры

>>> df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'],
...                     'value': [1, 2, 3, 5]})
>>> df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'baz', 'foo'],
...                     'value': [5, 6, 7, 8]})
>>> df1
    lkey value
0   foo      1
1   bar      2
2   baz      3
3   foo      5
>>> df2
    rkey value
0   foo      5
1   bar      6
2   baz      7
3   foo      8

Объединение df1 и df2 по столбцам lkey и rkey. Столбцы значений имеют по умолчанию суффиксы _x и _y, добавленные к ним.

>>> df1.merge(df2, left_on='lkey', right_on='rkey')
  lkey  value_x rkey  value_y
0  foo        1  foo        5
1  foo        1  foo        8
2  foo        5  foo        5
3  foo        5  foo        8
4  bar        2  bar        6
5  baz        3  baz        7

Объединение DataFrames df1 и df2 со специфицированными левым и правым суффиксами, присоединёнными к любым перекрывающимся столбцам.

>>> df1.merge(df2, left_on='lkey', right_on='rkey',
...           suffixes=('_left', '_right'))
  lkey  value_left rkey  value_right
0  foo           1  foo            5
1  foo           1  foo            8
2  foo           5  foo            5
3  foo           5  foo            8
4  bar           2  bar            6
5  baz           3  baz            7

Объединение DataFrames df1 и df2, но выброс исключения, если DataFrames имеют какие-либо перекрывающиеся столбцы.

>>> df1.merge(df2, left_on='lkey', right_on='rkey', suffixes=(False, False))
Traceback (most recent call last):
...
ValueError: columns overlap but no suffix specified:
    Index(['value'], dtype='object')

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.24.2/reference/api/pandas.DataFrame.merge.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API