DataFrame.join()

Метод join() объединяет два или несколько DataFrame по их индексу (или по столбцу левого и индексу правого). Это упрощённая версия merge(), оптимизированная для частого случая «склеить по общему индексу».

Сигнатура

DataFrame.join(other, on=None, how='left', lsuffix='',
               rsuffix='', sort=False, validate=None)

Параметры

  • other — DataFrame, Series (с именем) или список DataFrame.

  • on — столбец/столбцы левого DataFrame для сопоставления с индексом правого.

  • how — тип соединения: 'left' (по умолчанию), 'right', 'outer', 'inner', 'cross'.

  • lsuffix / rsuffix — суффиксы для совпадающих имён столбцов.

  • sort — сортировать ли результат по ключам соединения.

Возвращаемое значение

Новый DataFrame с объединёнными столбцами.

Примеры

Пример 1. Соединение по индексу

import pandas as pd

left  = pd.DataFrame({"temp":     [22, 23, 24]}, index=["s1", "s2", "s3"])
right = pd.DataFrame({"humidity": [55, 60]},     index=["s1", "s2"])
print(left.join(right))
    temp  humidity
s1    22      55.0
s2    23      60.0
s3    24       NaN

Пример 2. Inner join

import pandas as pd

a = pd.DataFrame({"x": [1, 2, 3]}, index=["a", "b", "c"])
b = pd.DataFrame({"y": [10, 20]},  index=["b", "c"])
print(a.join(b, how="inner"))
   x   y
b  2  10
c  3  20

Пример 3. Соединение через on

import pandas as pd

sensors = pd.DataFrame({"name": ["DHT11", "DS18B20"]},
                       index=["s1", "s2"])
log = pd.DataFrame({
    "sensor_id": ["s1", "s2", "s1"],
    "value":     [22, 23, 24],
})
print(log.join(sensors, on="sensor_id"))
  sensor_id  value     name
0        s1     22    DHT11
1        s2     23  DS18B20
2        s1     24    DHT11

Пример 4. Совпадающие имена → суффиксы

import pandas as pd

a = pd.DataFrame({"val": [1, 2]}, index=["x", "y"])
b = pd.DataFrame({"val": [10, 20]}, index=["x", "y"])
print(a.join(b, lsuffix="_a", rsuffix="_b"))
   val_a  val_b
x      1     10
y      2     20

Пример 5. Outer join нескольких таблиц

import pandas as pd

a = pd.DataFrame({"a": [1, 2]}, index=["x", "y"])
b = pd.DataFrame({"b": [10]},   index=["x"])
c = pd.DataFrame({"c": [100]},  index=["z"])
print(a.join([b, c], how="outer"))
     a     b      c
x  1.0  10.0    NaN
y  2.0   NaN    NaN
z  NaN   NaN  100.0

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.