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, атрибут name должен быть задан, и он будет использован в качестве имени столбца в результирующем объединённом DataFrame.
- on:str, список str или массив-подобный объект, необязательно
-
Имя столбца или уровня индекса в вызываемом объекте для объединения с индексом в other, в противном случае происходит объединение индекс-на-индекс. Если задано несколько значений, у DataFrame other должен быть MultiIndex. Можно передать массив в качестве ключа объединения, если он ещё не содержится в вызываемом DataFrame. Аналогично операции VLOOKUP в Excel.
- how:{‘left’, ‘right’, ‘outer’, ‘inner’}, по умолчанию ‘left’
-
Как обрабатывать операцию с двумя объектами.
left: использовать индекс вызываемого DataFrame (или столбец, если указан on)
right: использовать индекс other.
outer: формировать объединение индекса вызываемого DataFrame (или столбца, если задан on) с индексом other и сортировать его лексикографически.
inner: формировать пересечение индекса вызываемого DataFrame (или столбца, если задан on) с индексом other, сохраняя порядок вызываемого.
-
cross: создаёт декартово произведение обоих кадров, сохраняет порядок левых ключей.
Добавлена в версии 1.2.0.
- 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”: разрешено, но не приводит к проверкам. .. versionadded:: 1.5.0
- Возвращает
-
- DataFrame
-
DataFrame, содержащий столбцы как из вызываемого, так и из other.
См. также
DataFrame.merge-
Для операций столбец(ы)-на-столбец(ы).
Примечания
Параметры on, lsuffix и rsuffix не поддерживаются при передаче списка объектов DataFrame.
Поддержка указания уровней индекса как параметра on была добавлена в версии 0.23.0.
Примеры
>>> 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
Если мы хотим объединить по столбцам ключей, нам нужно установить key как индекс как в df, так и в other. Объединённый DataFrame будет иметь key в качестве индекса.
>>> 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/1.5.0/reference/api/pandas.DataFrame.join.html