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