pandas.DataFrame.join#

DataFrame.join(other, на=None, how='left', lsuffix='', rsuffix='', sort=False, проверять=None)[источник]#

Объединить столбцы другого DataFrame.

Объединить столбцы с other DataFrame либо по индексу, либо по ключевому столбцу. Эффективно объедините несколько объектов DataFrame по индексу одновременно, передав список.

Параметры:
otherDataFrame, Series или список, содержащий любую их комбинацию

Индекс должен быть похож на один из столбцов в этом. Если передается Series, его атрибут name должен быть установлен, и он будет использоваться как имя столбца в результирующем объединенном DataFrame.

наstr, список str или array-like, необязательно

Имя столбца или уровня индекса в вызывающем объекте для соединения по индексу в other, в противном случае соединяет индекс с индексом. Если задано несколько значений, то other DataFrame должен иметь MultiIndex. Можно передать массив в качестве ключа соединения, если он еще не содержится в вызывающем DataFrame. Подобно операции VLOOKUP в Excel.

how{‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’}, по умолчанию ‘left’

Как обрабатывать операцию двух объектов.

  • left: использовать индекс вызывающего фрейма (или столбец, если указан on)

  • right: использовать otherиндекс.

  • outer: формирует объединение индекса вызывающего фрейма (или столбца, если указан on) с other) индекс, и отсортировать его лексикографически.

  • inner: формировать пересечение индекса вызывающего фрейма (или столбца, если указан on) с otherиндекс, сохраняя порядок вызывающего.

  • cross: создаёт декартово произведение из обоих фреймов, сохраняет порядок левых ключей.

lsuffixstr, по умолчанию ‘’

Суффикс для использования из перекрывающихся столбцов левого фрейма.

rsuffixstr, по умолчанию ‘’

Суффикс для использования из перекрывающихся столбцов правого фрейма.

sortbool, по умолчанию False

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

проверятьstr, optional

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

  • “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

Для операций столбец(ы)-на-столбец(ы).

Примечания

Параметры на, 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

Объединить DataFrames с использованием их индексов.

>>> 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

Другой вариант соединения с использованием ключевых столбцов — использовать на параметр. 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