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