Объединение двух DataFrame в Pandas по двум столбцам

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для объединения двух DataFrame по нескольким ключам с помощью функции pd.merge(), примените параметр on:

Python
Скопировать код
merged_df = pd.merge(df1, df2, on=['Key1', 'Key2'])

Так, строки будут синхронизированы по столбцам 'Key1' и 'Key2' в обеих таблицах.

Кинга Идем в IT: пошаговый план для смены профессии

Любителей риска приглашаем поиграть c ключами для слияния

Если имена столбцов в ваших DataFrame очень похожи, кажется, что они созданы для того, чтобы быть вместе, но все же не совсем идентичны – не переживайте. pd.merge() позволяет достойно справиться с данной задачей:

Python
Скопировать код
merged_df = pd.merge(df1, df2, left_on=['df1_key1', 'df1_key2'], right_on=['df2_key1', 'df2_key2'])

Здесь используются параметры left_on и right_on, которые позволяют указать несколько разных имен столбцов, обозначающих одинаковые данные.

Определитесь с 'how'

Параметр how поможет выбрать тип слияния, необходимый для вашей задачи. Вот как это выглядит:

Python
Скопировать код
# Левостороннее слияние
left_joined_df = pd.merge(df1, df2, on=['Key1', 'Key2'], how='left')

# Правостороннее слияние
right_joined_df = pd.merge(df1, df2, on=['Key1', 'Key2'], how='right')

# Внутреннее слияние
inner_joined_df = pd.merge(df1, df2, on=['Key1', 'Key2'], how='inner')

# Полное слияние
outer_joined_df = pd.merge(df1, df2, on=['Key1', 'Key2'], how='outer')

Выберите метод, который наиболее уместно соответствует вашей задаче.

Не подходят индексы? Сбросьте их!

Иногда индексы – это основа ваших DataFrame, но они могут не совпадать. В таких ситуациях на помощь придет метод reset_index():

Python
Скопировать код
df1.reset_index(inplace=True)
df2.reset_index(inplace=True)
merged_df = pd.merge(df1, df2, on=['Key1', 'Key2'])

Этот метод – эффективный способ избежать индексного кризиса и синхронизировать несовпадающие индексы.

Визуализация

Проиллюстрируем процесс слияния двух DataFrame на примере пазлов с одинаковыми элементами:

Markdown
Скопировать код
DataFrame A: [Элемент 1, Элемент 2, Элемент 3]
DataFrame B: [Элемент 2, Элемент 3, Элемент 4]

Слияние схоже с подбором совпадающих элементов:

Python
Скопировать код
df_merged = pd.merge(dfA, dfB, on=['key1', 'key2'])

В результате получаем шедевр, составленный из частей обеих таблиц:

Markdown
Скопировать код
A🔗B: [Элемент 2, Элемент 3]
# Слияние для пазлов это как скотч для предметов!

В идеальном (столбцовом) мире все идеально, но не в этом случае!

Проверьте, что типы данных столбцов и имена столбцов совпадают. Вот некоторые полезные рекомендации:

  • df.dtypes покажет вам типы данных столбцов.
  • df.columns раскроет имена столбцов.
  • Правильная последовательность пар в left_on и right_on уменьшит вероятность ошибок.

Помните, что слияние проходит гладко, если столбцы согласованы.

Распространенные проблемы, вызывающие домино-эффект!

Вот некоторые часто встречающиеся сложности и пути их решения:

  • KeyError: Используйте списки вместо строки для on, left_on или right_on, чтобы избежать ошибок с ключами.
  • Несоответствие имен столбцов: Параметры left_on и right_on помогут вам правильно сопоставить имена столбцов.
  • Столбцы с одинаковыми названиями после слияния: Используйте параметр suffixes для различения столбцов с идентичными названиями.

Делайте тестовые слияния, чтобы избежать проблем в будущем.

Полезные материалы

  1. pandas.DataFrame.merge — документация pandas 2.2.0 – Это ваш надежный источник официальной документации.
  2. Объединение данных в pandas с помощью merge(), .join(), и concat() – Real Python – Real Python упрощает комбинацию DataFrame.
  3. Узнайте, как объединять и соединять DataFrame в Pandas и Python — Полезные примеры для практического объединения данных.
  4. YouTube урок по слиянию DataFrame в Pandas – Образовательное видео для визуального освоения материала.
  5. Объединение DataFrame с использованием Pandas Merge – Замечательный материал, сочетающий теорию и практику.
  6. Merge, join, concatenate и compare — документация pandas 2.2.0 – Обширный источник знаний о методах слияния в pandas.