pandas.DataFrame.join
- DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False, validate=None)[source]
-
Объединение столбцов другого DataFrame.
Объединение столбцов с DataFrame other по индексу или по ключу столбца. Эффективно объединяет несколько объектов DataFrame по индексу сразу, передавая список.
- Параметры:
-
- other:DataFrame, Series или список, содержащий любое их сочетание
-
Индекс должен быть похож на один из столбцов в этом. Если передана Series, её атрибут имени должен быть задан, и это будет использоваться в качестве имени столбца в результирующем объединённом DataFrame.
- on:str, список str или массив-подобный, необязательно
-
Имя(а) столбца или уровня индекса в вызываемом объекте для объединения с индексом в other, в противном случае объединяется по индексу. Если передано несколько значений, DataFrame other должен иметь MultiIndex. Можно передать массив в качестве ключа объединения, если он ещё не содержится в вызываемом DataFrame. Похоже на операцию VLOOKUP в Excel.
- how:{‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’}, по умолчанию ‘left’
-
Как обрабатывать операцию с двумя объектами.
left: использовать индекс вызываемого DataFrame (или столбец, если указан параметр on)
right: использовать индекс other.
outer: сформировать объединение индекса вызываемого DataFrame (или столбца, если указан параметр on) с индексом other и отсортировать его лексикографически.
inner: сформировать пересечение индекса вызываемого DataFrame (или столбца, если указан параметр on) с индексом other, сохраняя порядок вызываемого.
cross: создаёт декартово произведение из обоих DataFrame, сохраняет порядок левых ключей.
- lsuffix:str, по умолчанию ‘’
-
Суффикс для использования из перекрывающихся столбцов левого DataFrame.
- rsuffix:str, по умолчанию ‘’
-
Суффикс для использования из перекрывающихся столбцов правого DataFrame.
- sort:bool, по умолчанию False
-
Сортировать результирующий DataFrame лексикографически по ключу объединения. Если False, порядок ключа объединения зависит от типа объединения (параметр how).
- validate:str, необязательно
-
Если указано, проверяет, является ли объединение указанного типа.
“one_to_one” или “1:1”: проверяет, являются ли ключи объединения уникальными в обоих наборах данных.
“one_to_many” или “1:m”: проверяет, являются ли ключи объединения уникальными в левом наборе данных.
“many_to_one” или “m:1”: проверяет, являются ли ключи объединения уникальными в правом наборе данных.
“many_to_many” или “m:m”: разрешено, но не приводит к проверкам.
Доступно начиная с версии 1.5.0.
- Возвращает:
-
- DataFrame
-
DataFrame, содержащий столбцы как из вызываемого объекта, так и из other.
См. также
DataFrame.merge-
Для операций по столбцу(ам) — на столбец(ы).
Примечания
Параметры on, lsuffix и rsuffix не поддерживаются при передаче списка объектов DataFrame.
Примеры
>>> df = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3', 'K4', 'K5'], ... 'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5']})>>> df key A 0 K0 A0 1 K1 A1 2 K2 A2 3 K3 A3 4 K4 A4 5 K5 A5
>>> other = pd.DataFrame({'key': ['K0', 'K1', 'K2'], ... 'B': ['B0', 'B1', 'B2']})>>> other key B 0 K0 B0 1 K1 B1 2 K2 B2
Объединение DataFrame по их индексам.
>>> df.join(other, lsuffix='_caller', rsuffix='_other') key_caller A key_other B 0 K0 A0 K0 B0 1 K1 A1 K1 B1 2 K2 A2 K2 B2 3 K3 A3 NaN NaN 4 K4 A4 NaN NaN 5 K5 A5 NaN NaN
Если мы хотим объединять по столбцам-ключам, нам нужно задать ключ в качестве индекса как в df, так и в other. Объединённый DataFrame будет иметь ключ в качестве индекса.
>>> df.set_index('key').join(other.set_index('key')) A B key K0 A0 B0 K1 A1 B1 K2 A2 B2 K3 A3 NaN K4 A4 NaN K5 A5 NaNДругой вариант объединения по столбцам-ключам — использование параметра on. DataFrame.join всегда использует индекс other, но мы можем использовать любой столбец в df. Этот метод сохраняет исходный индекс DataFrame в результате.
>>> df.join(other.set_index('key'), on='key') key A B 0 K0 A0 B0 1 K1 A1 B1 2 K2 A2 B2 3 K3 A3 NaN 4 K4 A4 NaN 5 K5 A5 NaNИспользование не уникальных значений ключа показывает, как они сопоставляются.
>>> df = pd.DataFrame({'key': ['K0', 'K1', 'K1', 'K3', 'K0', 'K1'], ... 'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5']})>>> df key A 0 K0 A0 1 K1 A1 2 K1 A2 3 K3 A3 4 K0 A4 5 K1 A5
>>> df.join(other.set_index('key'), on='key', validate='m:1') key A B 0 K0 A0 B0 1 K1 A1 B1 2 K1 A2 B1 3 K3 A3 NaN 4 K0 A4 B0 5 K1 A5 B1
© 2008–2022, 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/2.2.2/reference/api/pandas.DataFrame.join.html