Spec-Zone.ru › pandas 2

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

Spec-Zone.ru

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