Учимся объединять таблицы в Python с помощью функции Pandas Merge
Pandas merge - это функция, позволяющая объединять два или более объектов DataFrame на основе одного или нескольких столбцов. Эта функция может быть использована для соединения двух или более таблиц по определенным условиям.
Пример использования:
Для начала, импортируем модуль pandas и создадим два DataFrame:
python
import pandas as pd
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'], 'value': [5, 6, 7, 8]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'], 'value': [5, 6, 7, 8]})
Теперь, объединим эти два DataFrame по ключу:
python
merged_df = pd.merge(df1, df2, on='key')
merged_df = pd.merge(df1, df2, on='key')
В результате получаем новый DataFrame, содержащий только строки, для которых значение ключа присутствует в обоих исходных DataFrame df1 и df2. Таким образом, в результате получим DataFrame, содержащий только строки с ключами 'B' и 'D':
key value_x value_y
0 B 2 5
1 D 4 6
В случае, если столбцы с ключом называются по-разному в обоих DataFrame, можно применить параметры left_on и right_on:
python
df1 = pd.DataFrame({'left_key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'right_key': ['B', 'D', 'E', 'F'], 'value': [5, 6, 7, 8]})
merged_df = pd.merge(df1, df2, left_on='left_key', right_on='right_key')
merged_df = pd.merge(df1, df2, left_on='left_key', right_on='right_key')
Если же нужно объединить DataFrame с использованием нескольких ключей, можно передать список ключей в параметре ‘on’:
python
df1 = pd.DataFrame({'key1': ['A', 'B', 'C', 'D'], 'key2': ['X', 'Y', 'Z', 'X'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key1': ['B', 'D', 'E', 'F'], 'key2': ['Y', 'X', 'Z', 'A'], 'value': [5, 6, 7, 8]})
merged_df = pd.merge(df1, df2, on=['key1', 'key2'])
merged_df = pd.merge(df1, df2, on=['key1', 'key2'])
Это объединит DataFrame, используя оба ключей key1 и key2 для сопоставления строк:
key1 key2 value_x value_y
0 D X 4 6
Также есть несколько вариантов соединения (join), такие как inner, outer, left и right, которые соответствуют соединению по общим ключам, соединению по всем строкам, левому и правому соединению. Каждый из этих вариантов может быть реализован, определив параметр how в функции pd.merge:
python
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'], 'value': [5, 6, 7, 8]})
#inner join
merged_df = pd.merge(df1, df2, on='key', how='inner')
#left join
merged_df = pd.merge(df1, df2, on='key', how='left')
#right join
merged_df = pd.merge(df1, df2, on='key', how='right')
#outer join
merged_df = pd.merge(df1, df2, on='key', how='outer')
merged_df = pd.merge(df1, df2, on='key', how='outer')
В итоге, функция pandas merge является очень мощным инструментом для соединения данных из нескольких источников или таблиц в более единый и полный DataFrame. Она позволяет задавать различные параметры для соединения и легко применять разные операции за счет разных возможностей параметров join и how.