Pandas.Merge () – объединение двух объектов DataFrame
Источник: https://www.digitalocean.com/community/tutorials/pandas-merge-two-dataframe |
При работе с датасетеми переодически их приходится объеденять. К примеру есть датасет с пользователями и продажами, и нужно посчитать какие-то оъедененные данные. В Pandas для этих целей есть функция Pandas.Merge ()
Функция используется для объединения двух объектов DataFrame с операцией соединения в стиле базы данных. Соединение выполняется на столбцах или индексах.
Если соединение сделано на столбцах, индексы игнорируются. Эта функция возвращает новый DataFrame и объекты источника DataFrame без изменений.
В своей практике я использую обычно left join или inner join. Собственно про них будет написано ниже.
Объединение по умолчанию – inner join
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
Объеденение при помощи Left, Right, and Outer Join
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