Функция Pandas join() | Документы с примерами

Функция join() в Pandas позволяет эффективно объединять фреймы данных на основе их индексов.

Это полезно для объединения наборов данных при работе с реляционными данными в Python.

Импорт панд

Перед использованием функции join() важно, чтобы у вас был установлен и импортирован Pandas, и это стандартная практика - импортировать его с псевдонимом:

import pandas as pd

Создание примеров фреймов данных

Давайте создадим два примера фреймов данных, чтобы продемонстрировать, как работает функция join().:

df1 = pd.DataFrame({
    "A": [1, 2, 3],
    "B": ["x", "y", "z"]
}, index=["one", "two", "four"])  # Note: "four" does not match with df2

df2 = pd.DataFrame({
    "C": [4, 5, 6],
    "D": ["p", "q", "r"]
}, index=["one", "three", "four"])  # Note: "three" does not match with df1

Использование функции join() для объединения фреймов данных

Метод join() объединяет фреймы данных на основе их индекса:

df_merged = df1.join(df2)
print(df_merged)

Выход:

      A  B    C    D
one   1  x  4.0    p
two   2  y  NaN  NaN
four  3  z  6.0    r

Пояснение: Это объединяет df1 с df2 в индексе, добавляя столбцы из df2 в df1.

Указание типов соединений

По умолчанию функция join() выполняет соединение слева. Вы можете изменить это с помощью параметра how:

1. Соединение слева (по умолчанию)

df_left = df1.join(df2, how="left")

Выход:

      A  B    C    D
one   1  x  4.0    p
two   2  y  NaN  NaN
four  3  z  6.0    r

Пояснение: Сохраняются все строки из df1 и добавляются соответствующие значения из df2. Пропущенные значения заполняются NaN.

2. Правильное соединение

df_right = df1.join(df2, how="right")

Выход:

         A    B  C  D
one    1.0    x  4  p
three  NaN  NaN  5  q
four   3.0    z  6  r

Пояснение: Сохраняются все строки из df2 и добавляются соответствующие значения из df1. Пропущенные значения заполняются NaN.

3. Внутреннее соединение

df_inner = df1.join(df2, how="inner")

Выход:

      A  B  C  D
one   1  x  4  p
four  3  z  6  r

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

4. Внешнее соединение

df_outer = df1.join(df2, how="outer")

Выход:

         A    B    C    D
four   3.0    z  6.0    r
one    1.0    x  4.0    p
three  NaN  NaN  5.0    q
two    2.0    y  NaN  NaN

Пояснение: Сохраняет все строки из обоих фреймов данных, заполняя пропущенные значения NaN. Обратите внимание, что порядок вывода внешнего объединения определяется сортировкой значений индекса. При выполнении внешнего объединения Pandas автоматически сортирует индекс в лексикографическом порядке, если не изменено явно.

Объединение по разным индексам

Если фреймы данных имеют разные индексы, функция join() автоматически выравнивает их:

df1 = pd.DataFrame({"A": [1, 2]}, index=["one", "two"])
df2 = pd.DataFrame({"C": [3, 4]}, index=["two", "three"])

df_joined = df1.join(df2, how="outer")
print(df_joined)

Выход:

         A    C
one    1.0  NaN
three  NaN  4.0
two    2.0  3.0

Пояснение: Это гарантирует сохранение всех данных, заполняя недостающие значения NaN.

Основные выводы

  • функция join() объединяет фреймы данных на основе их индекса.
  • Используйте how="левый", "правый", "внутренний" или "внешний", чтобы указать типы соединений.
  • Его лучше всего использовать, когда фреймы данных имеют одинаковую структуру индекса в ваших проектах на Python.

Практическое упражнение

Вот простая задача: откройте свой редактор Python и попробуйте создать два фрейма данных с разными индексами и выполнить внешнее объединение:

df1 = pd.DataFrame({"X": [10, 20]}, index=["a", "b"])
df2 = pd.DataFrame({"Y": [30, 40]}, index=["b", "c"])

df_result = df1.join(df2, how="outer")
print(df_result)

Сворачивание

Функция Pandas join() - это мощный метод для эффективного объединения фреймов данных при работе с индексированными данными. Понимание того, как правильно ее использовать, помогает упростить задачи анализа данных. Приятного программирования!