pandas.DataFrame.merge
-
DataFrame.merge(self, 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
Объединение DataFrame 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Объединение DataFrame df1 и df2, но с поднятием исключения, если DataFrame имеют какие-либо перекрывающиеся столбцы.
>>> 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.25.0/reference/api/pandas.DataFrame.merge.html