Автор оригинала: 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
Рекомендации
- Учебник модуля Python Pandas
- DataFrame Merge () API DOC