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.