Как присоединиться к DataFrames в Pandas Python?

Следующий вывод отображается в окне после выполнения вышеуказанного кода Программирование и разработка

Pandas DataFrame — это двумерная (2D) структура данных, которая выровнена в табличном формате. Эти DataFrames можно комбинировать с помощью различных методов, таких как concat (), merge () и соединения. Pandas обладают высокой производительностью и полнофункциональными операциями соединения, которые напоминают реляционную базу данных SQL. Используя функцию слияния, можно реализовать операции соединения между объектами DataFrames.

В этой статье мы рассмотрим использование функции слияния, функции concat и различных типов операций объединения в Python Pandas. Все примеры будут выполняться через редактор pycharm. Начнем с подробностей!

Использование функции слияния

Базовый часто используемый синтаксис функции merge () приведен ниже:

pd.merge(df_obj1, df_obj2, how=‘inner’, on=None, left_on=None, right_on=None)

Поясним детали параметров:

Первые два аргумента df_obj1 и df_obj2 — это имена объектов или таблиц DataFrame.

Параметр » как » используется для различных типов операций соединения, таких как «левый, правый, внешний и внутренний». Функция слияния по умолчанию использует «внутреннюю» операцию соединения.

Аргумент «on» содержит имя столбца, для которого выполняется операция соединения. Этот столбец должен присутствовать в обоих объектах DataFrame.

В аргументах «left_on» и «right_on» «left_on» — это имя имени столбца в качестве ключа в левом фрейме данных. «Right_on» — это имя столбца, используемого в качестве ключа от правого фрейма данных.

Чтобы разработать концепцию объединения DataFrame, мы взяли два объекта DataFrame — product и customer. В DataFrame продукта представлены следующие сведения:

product=pd.DataFrame({
‘Product_ID’:[101,102,103,104,105,106,107],
‘Product_Name’:[‘headphones’,‘Bag’,‘Shoes’,‘Smartphone’,‘Teeth brush’,‘wrist watch’,‘Laptop’],
‘Category’:[‘Electronics’,‘Fashion’,‘Fashion’,‘Electronics’,‘Grocery’,‘Fashion’,‘Electronics’],
‘Price’:[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
‘Seller_City’:[‘Islamabad’,‘Lahore’,‘Karachi’,‘Rawalpindi’,‘Islamabad’,‘Karachi’,‘Faisalabad’]
})

Фрейм данных клиента содержит следующие сведения:

customer=pd.DataFrame({
‘ID’:[1,2,3,4,5,6,7,8,9],
‘Customer_Name’:[‘Sara’,‘Sana’,‘Ali’,‘Raees’,‘Mahwish’,‘Umar’,‘Mirha’,‘Asif’,‘Maria’],
‘Age’:[20,21,15,10,31,52,15,18,16],
‘Product_ID’:[101,,106,,103,104,,,107],
‘Product_Purchased’:[‘headphones’,‘NA’,‘wrist watch’,‘NA’,‘Shoes’,‘Smartphone’,‘NA’,‘NA’,‘Laptop’],
‘Customer_City’:[‘Lahore’,‘Islamabad’,‘Faisalabad’,‘Karachi’,‘Karachi’,‘Islamabad’,‘Rawalpindi’,‘Islamabad’,
‘Lahore’]
})

Присоединение к DataFrames по ключу

Мы легко можем найти товары, продаваемые в Интернете, и покупателей, которые их приобрели. Итак, на основе ключа Product_ID мы выполнили операцию внутреннего соединения для обоих DataFrames следующим образом:

# import Pandas library

import pandas as pd
product=pd.DataFrame({
‘Product_ID’:[101,102,103,104,105,106,107],
‘Product_Name’:[‘headphones’,‘Bag’,‘Shoes’,‘Smartphone’,‘Teeth brush’,‘wrist watch’,‘Laptop’],
‘Category’:[‘Electronics’,‘Fashion’,‘Fashion’,‘Electronics’,‘Grocery’,‘Fashion’,‘Electronics’],
‘Price’:[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
‘Seller_City’:[‘Islamabad’,‘Lahore’,‘Karachi’,‘Rawalpindi’,‘Islamabad’,‘Karachi’,‘Faisalabad’]
})
customer=pd.DataFrame({
‘ID’:[1,2,3,4,5,6,7,8,9],
‘Customer_Name’:[‘Sara’,‘Sana’,‘Ali’,‘Raees’,‘Mahwish’,‘Umar’,‘Mirha’,‘Asif’,‘Maria’],
‘Age’:[20,21,15,10,31,52,15,18,16],
‘Product_ID’:[101,,106,,103,104,,,107],
‘Product_Purchased’:[‘headphones’,‘NA’,‘wrist watch’,‘NA’,‘Shoes’,‘Smartphone’,‘NA’,‘NA’,‘Laptop’],
‘City’:[‘Lahore’,‘Islamabad’,‘Faisalabad’,‘Karachi’,‘Karachi’,‘Islamabad’,‘Rawalpindi’,‘Islamabad’,
‘Lahore’]
})
print (pd.merge(product,customer,on=‘Product_ID’))

Следующий вывод отображается в окне после выполнения вышеуказанного кода:

Следующий вывод отображается в окне после выполнения вышеуказанного кода

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

import pandas as pd
product=pd.DataFrame({
‘Product_ID’:[101,102,103,104,105,106,107],
‘Product_Name’:[‘headphones’,‘Bag’,‘Shoes’,‘Smartphone’,‘Teeth brush’,‘wrist watch’,‘Laptop’],
‘Category’:[‘Electronics’,‘Fashion’,‘Fashion’,‘Electronics’,‘Grocery’,‘Fashion’,‘Electronics’],
‘Price’:[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
‘Seller_City’:[‘Islamabad’,‘Lahore’,‘Karachi’,‘Rawalpindi’,‘Islamabad’,‘Karachi’,‘Faisalabad’]
})
customer=pd.DataFrame({
‘ID’:[1,2,3,4,5,6,7,8,9],
‘Customer_Name’:[‘Sara’,‘Sana’,‘Ali’,‘Raees’,‘Mahwish’,‘Umar’,‘Mirha’,‘Asif’,‘Maria’],
‘Age’:[20,21,15,10,31,52,15,18,16],
‘Product_ID’:[101,,106,,103,104,,,107],
‘Product_Purchased’:[‘headphones’,‘NA’,‘wrist watch’,‘NA’,‘Shoes’,‘Smartphone’,‘NA’,‘NA’,‘Laptop’],
‘City’:[‘Lahore’,‘Islamabad’,‘Faisalabad’,‘Karachi’,‘Karachi’,‘Islamabad’,‘Rawalpindi’,‘Islamabad’,
‘Lahore’]
})
print (pd.merge(product,customer,left_on=‘Product_Name’,right_on=‘Product_Purchased’))

На экране появится следующий результат:

Читайте также:  Новые неизменяемые типы данных JavaScript: записи и кортежи

На экране появится следующий результат

Присоединяйтесь к DataFrames, используя аргумент How

В следующих примерах мы объясним четыре типа операций объединения в Pandas DataFrames:

  • Внутреннее соединение
  • Внешнее соединение
  • Левое соединение
  • Правое соединение

Внутреннее присоединение в пандах

Мы можем выполнить внутреннее соединение для нескольких ключей. Чтобы отобразить более подробную информацию о продажах продукта, возьмите Product_ID, Seller_City из фрейма данных продукта и Product_ID и «Customer_City» из фрейма данных клиента, чтобы определить, что либо продавец, либо покупатель принадлежат к одному и тому же городу. Реализуйте следующие строки кода:

# import Pandas library

import pandas as pd
product=pd.DataFrame({
‘Product_ID’:[101,102,103,104,105,106,107],
‘Product_Name’:[‘headphones’,‘Bag’,‘Shoes’,‘Smartphone’,‘Teeth brush’,‘wrist watch’,‘Laptop’],
‘Category’:[‘Electronics’,‘Fashion’,‘Fashion’,‘Electronics’,‘Grocery’,‘Fashion’,‘Electronics’],
‘Price’:[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
‘Seller_City’:[‘Islamabad’,‘Lahore’,‘Karachi’,‘Rawalpindi’,‘Islamabad’,‘Karachi’,‘Faisalabad’]
})
customer=pd.DataFrame({
‘ID’:[1,2,3,4,5,6,7,8,9],
‘Customer_Name’:[‘Sara’,‘Sana’,‘Ali’,‘Raees’,‘Mahwish’,‘Umar’,‘Mirha’,‘Asif’,‘Maria’],
‘Age’:[20,21,15,10,31,52,15,18,16],
‘Product_ID’:[101,,106,,103,104,,,107],
‘Product_Purchased’:[‘headphones’,‘NA’,‘wrist watch’,‘NA’,‘Shoes’,‘Smartphone’,‘NA’,‘NA’,‘Laptop’],
‘Customer_City’:[‘Lahore’,‘Islamabad’,‘Faisalabad’,‘Karachi’,‘Karachi’,‘Islamabad’,‘Rawalpindi’,‘Islamabad’,
‘Lahore’]
})
print (pd.merge(product,customer,how=‘inner’,left_on=[‘Product_ID’,‘Seller_City’],right_on=[‘Product_ID’,‘Customer_City’]))

Следующий результат отображается в окне после выполнения вышеуказанного кода:

Полное / внешнее соединение в пандах

Внешние объединения возвращают значения как правого, так и левого DataFrames, у которых есть совпадения. Итак, чтобы реализовать внешнее соединение, установите аргумент „как“ как внешний. Давайте изменим приведенный выше пример, используя концепцию внешнего соединения. В приведенном ниже коде он вернет все значения как левого, так и правого DataFrames.

# import Pandas library

import pandas as pd
product=pd.DataFrame({
‘Product_ID’:[101,102,103,104,105,106,107],
‘Product_Name’:[‘headphones’,‘Bag’,‘Shoes’,‘Smartphone’,‘Teeth brush’,‘wrist watch’,‘Laptop’],
‘Category’:[‘Electronics’,‘Fashion’,‘Fashion’,‘Electronics’,‘Grocery’,‘Fashion’,‘Electronics’],
‘Price’:[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
‘Seller_City’:[‘Islamabad’,‘Lahore’,‘Karachi’,‘Rawalpindi’,‘Islamabad’,‘Karachi’,‘Faisalabad’]
})
customer=pd.DataFrame({
‘ID’:[1,2,3,4,5,6,7,8,9],
‘Customer_Name’:[‘Sara’,‘Sana’,‘Ali’,‘Raees’,‘Mahwish’,‘Umar’,‘Mirha’,‘Asif’,‘Maria’],
‘Age’:[20,21,15,10,31,52,15,18,16],
‘Product_ID’:[101,,106,,103,104,,,107],
‘Product_Purchased’:[‘headphones’,‘NA’,‘wrist watch’,‘NA’,‘Shoes’,‘Smartphone’,‘NA’,‘NA’,‘Laptop’],
‘Customer_City’:[‘Lahore’,‘Islamabad’,‘Faisalabad’,‘Karachi’,‘Karachi’,‘Islamabad’,‘Rawalpindi’,‘Islamabad’,
‘Lahore’]
})
print (pd.merge(product,customer,on=‘Product_ID’,how=‘outer’))

Установите аргумент индикатора как „Истина“. Вы заметите, что в конце добавлен новый столбец „_merge“.

# import Pandas library

import pandas as pd
product=pd.DataFrame({
‘Product_ID’:[101,102,103,104,105,106,107],
‘Product_Name’:[‘headphones’,‘Bag’,‘Shoes’,‘Smartphone’,‘Teeth brush’,‘wrist watch’,‘Laptop’],
‘Category’:[‘Electronics’,‘Fashion’,‘Fashion’,‘Electronics’,‘Grocery’,‘Fashion’,‘Electronics’],
‘Price’:[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
‘Seller_City’:[‘Islamabad’,‘Lahore’,‘Karachi’,‘Rawalpindi’,‘Islamabad’,‘Karachi’,‘Faisalabad’]
})
customer=pd.DataFrame({
‘ID’:[1,2,3,4,5,6,7,8,9],
‘Customer_Name’:[‘Sara’,‘Sana’,‘Ali’,‘Raees’,‘Mahwish’,‘Umar’,‘Mirha’,‘Asif’,‘Maria’],
‘Age’:[20,21,15,10,31,52,15,18,16],
‘Product_ID’:[101,,106,,103,104,,,107],
‘Product_Purchased’:[‘headphones’,‘NA’,‘wrist watch’,‘NA’,‘Shoes’,‘Smartphone’,‘NA’,‘NA’,‘Laptop’],
‘Customer_City’:[‘Lahore’,‘Islamabad’,‘Faisalabad’,‘Karachi’,‘Karachi’,‘Islamabad’,‘Rawalpindi’,‘Islamabad’,
‘Lahore’]
})
print (pd.merge(product,customer,on=‘Product_ID’,how=‘outer’,indicator=True))

Как вы можете видеть на снимке экрана ниже, значения столбца слияния объясняют, какая строка принадлежит какому фрейму данных.

Читайте также:  Front End разработка: руководство для начинающих

Left Join в Pandas

Левое соединение отображает только строки левого фрейма данных. Это похоже на внешнее соединение. Итак, измените значение аргумента „как“ на „влево“. Попробуйте следующий код, чтобы реализовать идею левого соединения:

# import Pandas library

import pandas as pd
product=pd.DataFrame({
‘Product_ID’:[101,102,103,104,105,106,107],
‘Product_Name’:[‘headphones’,‘Bag’,‘Shoes’,‘Smartphone’,‘Teeth brush’,‘wrist watch’,‘Laptop’],
‘Category’:[‘Electronics’,‘Fashion’,‘Fashion’,‘Electronics’,‘Grocery’,‘Fashion’,‘Electronics’],
‘Price’:[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
‘Seller_City’:[‘Islamabad’,‘Lahore’,‘Karachi’,‘Rawalpindi’,‘Islamabad’,‘Karachi’,‘Faisalabad’]
})
customer=pd.DataFrame({
‘ID’:[1,2,3,4,5,6,7,8,9],
‘Customer_Name’:[‘Sara’,‘Sana’,‘Ali’,‘Raees’,‘Mahwish’,‘Umar’,‘Mirha’,‘Asif’,‘Maria’],
‘Age’:[20,21,15,10,31,52,15,18,16],
‘Product_ID’:[101,,106,,103,104,,,107],
‘Product_Purchased’:[‘headphones’,‘NA’,‘wrist watch’,‘NA’,‘Shoes’,‘Smartphone’,‘NA’,‘NA’,‘Laptop’],
‘Customer_City’:[‘Lahore’,‘Islamabad’,‘Faisalabad’,‘Karachi’,‘Karachi’,‘Islamabad’,‘Rawalpindi’,‘Islamabad’,
‘Lahore’]
})
print (pd.merge(product,customer,on=‘Product_ID’,how=‘left’))

Право присоединиться к Pandas

Правое соединение удерживает все правые строки DataFrame справа вместе со строками, которые также являются общими для левого DataFrame. В этом случае аргумент „как“ устанавливается как „правильное“ значение. Выполните следующий код, чтобы реализовать правильную концепцию соединения:

# import Pandas library

import pandas as pd
product=pd.DataFrame({
‘Product_ID’:[101,102,103,104,105,106,107],
‘Product_Name’:[‘headphones’,‘Bag’,‘Shoes’,‘Smartphone’,‘Teeth brush’,‘wrist watch’,‘Laptop’],
‘Category’:[‘Electronics’,‘Fashion’,‘Fashion’,‘Electronics’,‘Grocery’,‘Fashion’,‘Electronics’],
‘Price’:[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
‘Seller_City’:[‘Islamabad’,‘Lahore’,‘Karachi’,‘Rawalpindi’,‘Islamabad’,‘Karachi’,‘Faisalabad’]
})
customer=pd.DataFrame({
‘ID’:[1,2,3,4,5,6,7,8,9],
‘Customer_Name’:[‘Sara’,‘Sana’,‘Ali’,‘Raees’,‘Mahwish’,‘Umar’,‘Mirha’,‘Asif’,‘Maria’],
‘Age’:[20,21,15,10,31,52,15,18,16],
‘Product_ID’:[101,,106,,103,104,,,107],
‘Product_Purchased’:[‘headphones’,‘NA’,‘wrist watch’,‘NA’,‘Shoes’,‘Smartphone’,‘NA’,‘NA’,‘Laptop’],
‘Customer_City’:[‘Lahore’,‘Islamabad’,‘Faisalabad’,‘Karachi’,‘Karachi’,‘Islamabad’,‘Rawalpindi’,‘Islamabad’,
‘Lahore’]
})
print (pd.merge(product,customer,on=‘Product_ID’,how=‘right’))

На следующем снимке экрана вы можете увидеть результат после выполнения вышеуказанного кода:

На следующем снимке экрана вы можете увидеть результат после выполнения вышеуказанного кода

Объединение DataFrames с помощью функции Concat ()

Два DataFrames можно объединить с помощью функции concat. Базовый синтаксис функции конкатенации приведен ниже:

pd.concat([df_obj1, df_obj_2]))

В качестве аргументов передаются два объекта DataFrames.

Давайте присоединимся к продукту DataFrames и к клиенту с помощью функции concat. Выполните следующие строки кода, чтобы объединить два DataFrames:

# import Pandas library

import pandas as pd
product=pd.DataFrame({
‘Product_ID’:[101,102,103,104,105,106,107],
‘Product_Name’:[‘headphones’,‘Bag’,‘Shoes’,‘Smartphone’,‘Teeth brush’,‘wrist watch’,‘Laptop’],
‘Category’:[‘Electronics’,‘Fashion’,‘Fashion’,‘Electronics’,‘Grocery’,‘Fashion’,‘Electronics’],
‘Price’:[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
‘Seller_City’:[‘Islamabad’,‘Lahore’,‘Karachi’,‘Rawalpindi’,‘Islamabad’,‘Karachi’,‘Faisalabad’]
})
customer=pd.DataFrame({
‘ID’:[1,2,3,4,5,6,7,8,9],
‘Customer_Name’:[‘Sara’,‘Sana’,‘Ali’,‘Raees’,‘Mahwish’,‘Umar’,‘Mirha’,‘Asif’,‘Maria’],
‘Age’:[20,21,15,10,31,52,15,18,16],
‘Product_ID’:[101,,106,,103,104,,,107],
‘Product_Purchased’:[‘headphones’,‘NA’,‘wrist watch’,‘NA’,‘Shoes’,‘Smartphone’,‘NA’,‘NA’,‘Laptop’],
‘Customer_City’:[‘Lahore’,‘Islamabad’,‘Faisalabad’,‘Karachi’,‘Karachi’,‘Islamabad’,‘Rawalpindi’,‘Islamabad’,
‘Lahore’]
})
print (pd.concat([product,customer]))

Вывод

В этой статье мы обсудили реализацию функции merge (), функций concat () и операции объединения в Python Pandas. Используя вышеуказанные методы, вы можете легко объединить два DataFrames и изучить их. как реализовать операции соединения «внутреннее, внешнее, левое и правое» в Pandas. Надеюсь, это руководство поможет вам реализовать операции соединения для различных типов DataFrames. Пожалуйста, дайте нам знать о своих трудностях в случае ошибки. ошибки.

Оцените статью
bestprogrammer.ru
Добавить комментарий