Рубрики
Без рубрики

Pandas Merge () – объединение двух объектов DataFrame

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

Автор оригинала: Pankaj Kumar.

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

Если соединение сделано на столбцах, индексы игнорируются. Эта функция возвращает новый DataFrame и объекты источника DataFrame без изменений.

Pandas DataFrame Merge () Синтаксис функции

Функциональный синтаксис Merge ():

def merge(
    self,
    right,
    how="inner",
    on=None,
    left_on=None,
    right_on=None,
    left_index=False,
    right_index=False,
    sort=False,
    suffixes=("_x", "_y"),
    copy=True,
    indicator=False,
    validate=None,
)
  • правильно Другое dataframe сливается с источником dataframe.
  • Как : {«левый», «правильно», «внешний», «внутренний»}, по умолчанию «внутреннее». Это самый важный параметр, чтобы определить тип операции слияния. Они аналогичны SQL Left Window Join, правым внешним соединением, полным внешним соединением и внутренним соединением.
  • на : Столбец или имен на уровне индекса для присоединения. Эти столбцы должны присутствовать как в данных DataFrames. Если не предусмотрено, пересечение колонн в обоих датафах используются.
  • left_on : Имена колонны или индекса, чтобы присоединиться к левому DataFrame.
  • right_on : Колонны или имена уровня индекса, чтобы присоединиться к правильному DataFrame.
  • left_index : Используйте индекс из левого DataFrame в качестве клавиши соединения.
  • right_index : Используйте индекс из правого DataFrame в качестве ключа присоединения.
  • Сортировать : Сортировать ключи соединения лексикографически в результате DataFrame.
  • суффиксы : Суффикс, чтобы применить к перекрывающимся именам столбцов в левой и правой стороне соответственно.
  • Индикатор Если true, добавляет столбец к выводу dataframe под названием “_merge” с информацией о источнике каждой строки.
  • проверить : Используется для подтверждения процесса слияния. Допустимые значения {{one_to_one “или” 1: 1 “,” one_to_many “или” 1: m “, multi_to_one” или «M: 1», «MULY_TO_MANY» или «M: M»}.

Примеры Pandas DataFrame Merge ()

Давайте посмотрим на несколько примеров объединения двух объектов DataFrame.

1. Объединение по умолчанию – внутреннее соединение

import pandas as pd

d1 = {'Name': ['Pankaj', 'Meghna', 'Lisa'], 'Country': ['India', 'India', 'USA'], 'Role': ['CEO', 'CTO', 'CTO']}

df1 = pd.DataFrame(d1)

print('DataFrame 1:\n', df1)

df2 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Pankaj', 'Anupam', 'Amit']})
print('DataFrame 2:\n', df2)

df_merged = df1.merge(df2)
print('Result:\n', df_merged)

Выход:

DataFrame 1:
      Name Country Role
0  Pankaj   India  CEO
1  Meghna   India  CTO
2    Lisa     USA  CTO
DataFrame 2:
    ID    Name
0   1  Pankaj
1   2  Anupam
2   3    Amit
Result:
      Name Country Role  ID
0  Pankaj   India  CEO   1

2. Объединение данных данных с левым, правым и внешним присоединением

print('Result Left Join:\n', df1.merge(df2, how='left'))
print('Result Right Join:\n', df1.merge(df2, how='right'))
print('Result Outer Join:\n', df1.merge(df2, how='outer'))

Выход:

Result Left Join:
      Name Country Role   ID
0  Pankaj   India  CEO  1.0
1  Meghna   India  CTO  NaN
2    Lisa     USA  CTO  NaN
Result Right Join:
      Name Country Role  ID
0  Pankaj   India  CEO   1
1  Anupam     NaN  NaN   2
2    Amit     NaN  NaN   3
Result Outer Join:
      Name Country Role   ID
0  Pankaj   India  CEO  1.0
1  Meghna   India  CTO  NaN
2    Lisa     USA  CTO  NaN
3  Anupam     NaN  NaN  2.0
4    Amit     NaN  NaN  3.0

3. Объединение данных DataFrame на определенные столбцы

import pandas as pd

d1 = {'Name': ['Pankaj', 'Meghna', 'Lisa'], 'ID': [1, 2, 3], 'Country': ['India', 'India', 'USA'],
      'Role': ['CEO', 'CTO', 'CTO']}
df1 = pd.DataFrame(d1)

df2 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Pankaj', 'Anupam', 'Amit']})

print(df1.merge(df2, on='ID'))
print(df1.merge(df2, on='Name'))

Выход:

   Name_x  ID Country Role  Name_y
0  Pankaj   1   India  CEO  Pankaj
1  Meghna   2   India  CTO  Anupam
2    Lisa   3     USA  CTO    Amit

     Name  ID_x Country Role  ID_y
0  Pankaj     1   India  CEO     1

4. Укажите левые и правые столбцы для объединения объектов DataFrame

import pandas as pd

d1 = {'Name': ['Pankaj', 'Meghna', 'Lisa'], 'ID1': [1, 2, 3], 'Country': ['India', 'India', 'USA'],
      'Role': ['CEO', 'CTO', 'CTO']}
df1 = pd.DataFrame(d1)

df2 = pd.DataFrame({'ID2': [1, 2, 3], 'Name': ['Pankaj', 'Anupam', 'Amit']})

print(df1.merge(df2))

print(df1.merge(df2, left_on='ID1', right_on='ID2'))

Выход;

     Name  ID1 Country Role  ID2
0  Pankaj    1   India  CEO    1

   Name_x  ID1 Country Role  ID2  Name_y
0  Pankaj    1   India  CEO    1  Pankaj
1  Meghna    2   India  CTO    2  Anupam
2    Lisa    3     USA  CTO    3    Amit

5. Использование индекса в качестве клавиш соединения для объединения данных DataFrames

import pandas as pd

d1 = {'Name': ['Pankaj', 'Meghna', 'Lisa'], 'Country': ['India', 'India', 'USA'], 'Role': ['CEO', 'CTO', 'CTO']}
df1 = pd.DataFrame(d1)

df2 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Pankaj', 'Anupam', 'Amit']})

df_merged = df1.merge(df2)
print('Result Default Merge:\n', df_merged)

df_merged = df1.merge(df2, left_index=True, right_index=True)
print('\nResult Index Merge:\n', df_merged)

Выход:

Result Default Merge:
      Name Country Role  ID
0  Pankaj   India  CEO   1

Result Index Merge:
    Name_x Country Role  ID  Name_y
0  Pankaj   India  CEO   1  Pankaj
1  Meghna   India  CTO   2  Anupam
2    Lisa     USA  CTO   3    Amit

Рекомендации