Cómo unir Dataframes en Pandas Python?

Cómo unir Dataframes en Pandas Python?
Pandas DataFrame es una estructura de datos bidimensional (2D) que está alineada en un formato tabular. Estos marcos de datos se pueden combinar utilizando diferentes métodos como concat (), fusion () y se unen. Los pandas tienen operaciones de unión de alto rendimiento y con todas las funciones que se parecen a la base de datos relacional de SQL. Usando la función de fusión, las operaciones de unión se pueden implementar entre los objetos de Dataframes.

Exploraremos los usos de la función de fusión, la función concat y los diferentes tipos de operaciones de uniones en Pandas Python en este artículo. Todos los ejemplos se ejecutarán a través del editor de Pycharm. Comencemos con los detalles!

Uso de la función de fusión

La sintaxis básica comúnmente utilizada de la función fusion () se da-below:

pd.Merge (DF_OBJ1, DF_OBJ2, How = 'Inner', ON = None, Left_on = None, Right_on = None)

Expliquemos los detalles de los parámetros:

Los primeros dos df_obj1 y df_obj2 Los argumentos son los nombres de los objetos o tablas de DataFrame.

El "cómo"El parámetro se usa para diferentes tipos de operaciones de unión, como" izquierda, derecha, exterior e interior ". La función de fusión utiliza la operación de unión "interna" de forma predeterminada.

El argumento "en" contiene el nombre de la columna en el que se realiza la operación de unión. Esta columna debe estar presente en ambos objetos de DataFrame.

En los argumentos "Left_on" y "Right_on", "Left_on" es el nombre del nombre de la columna como la clave en el marco de datos izquierdo. El "right_on" es el nombre de la columna utilizado como clave desde el marco de datos correcto.

Para elaborar el concepto de unir DataFrames, hemos tomado dos objetos de marco de datos: producto y cliente. Los siguientes detalles están presentes en el marcado de datos del producto:

Producto = PD.Marco de datos(
'Product_id': [101,102,103,104,105,106,107],
'Product_Name': ['Auriculares', 'Bag', 'Zapatos', 'teléfono inteligente', 'Cepillo de dientes', 'Reloj de pulsera', 'laptop'],
'Categoría': ['Electrónica', 'moda', 'moda', 'electrónica', 'supermercado', 'moda', 'electrónica'],
'Precio': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_city': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)

El marco de datos del cliente contiene los siguientes detalles:

Cliente = PD.Marco de datos(
'Id': [1,2,3,4,5,6,7,8,9],
'Customer_name': ['Sara', 'sana', 'ali', 'raees', 'mahwish', 'umar', 'mirha', 'asif', 'maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_id': [101,0,106,0,103,104,0,0,107],
'Product_Purcheded': ['Auriculares', 'Na', 'Muñeco de muñeca', 'na', 'zapatos', 'teléfono inteligente', 'na', 'na', 'laptop']],
'Customer_city': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)

Unir Dataframes en una clave

Podemos encontrar fácilmente productos vendidos en línea y los clientes que los compraron. Entonces, según una clave "Product_ID", hemos realizado una operación de unión interna en ambos marcos de datos de la siguiente manera:

# Biblioteca de Pandas de importación
importar pandas como PD
Producto = PD.Marco de datos(
'Product_id': [101,102,103,104,105,106,107],
'Product_Name': ['Auriculares', 'Bag', 'Zapatos', 'teléfono inteligente', 'Cepillo de dientes', 'Reloj de pulsera', 'laptop'],
'Categoría': ['Electrónica', 'moda', 'moda', 'electrónica', 'supermercado', 'moda', 'electrónica'],
'Precio': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_city': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
Cliente = PD.Marco de datos(
'Id': [1,2,3,4,5,6,7,8,9],
'Customer_name': ['Sara', 'sana', 'ali', 'raees', 'mahwish', 'umar', 'mirha', 'asif', 'maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_id': [101,0,106,0,103,104,0,0,107],
'Product_Purcheded': ['Auriculares', 'Na', 'Muñeco de muñeca', 'na', 'zapatos', 'teléfono inteligente', 'na', 'na', 'laptop']],
'Ciudad': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Imprimir (PD.fusionar (producto, cliente, on = 'product_id'))

La siguiente salida se muestra en la ventana después de ejecutar el código anterior:

Si las columnas son diferentes en ambos datos de datos, escriban explícitamente el nombre de cada columna por los argumentos Left_on y Right_on de la siguiente manera:

importar pandas como PD
Producto = PD.Marco de datos(
'Product_id': [101,102,103,104,105,106,107],
'Product_Name': ['Auriculares', 'Bag', 'Zapatos', 'teléfono inteligente', 'Cepillo de dientes', 'Reloj de pulsera', 'laptop'],
'Categoría': ['Electrónica', 'moda', 'moda', 'electrónica', 'supermercado', 'moda', 'electrónica'],
'Precio': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_city': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
Cliente = PD.Marco de datos(
'Id': [1,2,3,4,5,6,7,8,9],
'Customer_name': ['Sara', 'sana', 'ali', 'raees', 'mahwish', 'umar', 'mirha', 'asif', 'maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_id': [101,0,106,0,103,104,0,0,107],
'Product_Purcheded': ['Auriculares', 'Na', 'Muñeco de muñeca', 'na', 'zapatos', 'teléfono inteligente', 'na', 'na', 'laptop']],
'Ciudad': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Imprimir (PD.fusion (producto, cliente, izquierda = 'Product_name', right_on = 'Product_Purchased')))

La siguiente salida se mostrará en la pantalla:

Unir Dataframes utilizando cómo argumento

En los siguientes ejemplos, explicaremos cuatro tipos de operaciones de uniones en Pandas Dataframes:

  • Unir internamente
  • Unión exterior
  • Se unió a la izquierda
  • Juego correcto

Inner Únete en Pandas

Podemos realizar una unión interna en múltiples teclas. Para mostrar más detalles sobre las ventas de productos, tome Product_ID, Seller_City de Product DataFrame y Product_ID, y "Customer_City" del cliente de datos del cliente para encontrar que el vendedor o el cliente pertenecen a la misma ciudad. Implemente las siguientes líneas de código:

# Biblioteca de Pandas de importación
importar pandas como PD
Producto = PD.Marco de datos(
'Product_id': [101,102,103,104,105,106,107],
'Product_Name': ['Auriculares', 'Bag', 'Zapatos', 'teléfono inteligente', 'Cepillo de dientes', 'Reloj de pulsera', 'laptop'],
'Categoría': ['Electrónica', 'moda', 'moda', 'electrónica', 'supermercado', 'moda', 'electrónica'],
'Precio': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_city': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
Cliente = PD.Marco de datos(
'Id': [1,2,3,4,5,6,7,8,9],
'Customer_name': ['Sara', 'sana', 'ali', 'raees', 'mahwish', 'umar', 'mirha', 'asif', 'maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_id': [101,0,106,0,103,104,0,0,107],
'Product_Purcheded': ['Auriculares', 'Na', 'Muñeco de muñeca', 'na', 'zapatos', 'teléfono inteligente', 'na', 'na', 'laptop']],
'Customer_city': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Imprimir (PD.fusion (producto, cliente, cómo = 'inner', left_on = ['product_id', 'seller_city'], right_on = ['product_id', 'customer_city']))

El siguiente resultado se muestra en la ventana después de ejecutar el código anterior:

Full/Outter Join en Pandas

OUTERS JUNS Devuelve los valores de Dataframes de datos derecho e izquierdo, que tienen coincidencias. Entonces, para implementar la unión externa, establezca el argumento "cómo" como exterior. Modifiquemos el ejemplo anterior utilizando el concepto de unión exterior. En el siguiente código, devolverá todos los valores de DataFrames de izquierda y derecha.

# Biblioteca de Pandas de importación
importar pandas como PD
Producto = PD.Marco de datos(
'Product_id': [101,102,103,104,105,106,107],
'Product_Name': ['Auriculares', 'Bag', 'Zapatos', 'teléfono inteligente', 'Cepillo de dientes', 'Reloj de pulsera', 'laptop'],
'Categoría': ['Electrónica', 'moda', 'moda', 'electrónica', 'supermercado', 'moda', 'electrónica'],
'Precio': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_city': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
Cliente = PD.Marco de datos(
'Id': [1,2,3,4,5,6,7,8,9],
'Customer_name': ['Sara', 'sana', 'ali', 'raees', 'mahwish', 'umar', 'mirha', 'asif', 'maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_id': [101,0,106,0,103,104,0,0,107],
'Product_Purcheded': ['Auriculares', 'Na', 'Muñeco de muñeca', 'na', 'zapatos', 'teléfono inteligente', 'na', 'na', 'laptop']],
'Customer_city': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Imprimir (PD.fusionar (producto, cliente, on = 'product_id', cómo = 'exterior'))

Establezca el argumento del indicador como "verdadero" s. Notará que la nueva columna "_merge" se agrega al final.

# Biblioteca de Pandas de importación
importar pandas como PD
Producto = PD.Marco de datos(
'Product_id': [101,102,103,104,105,106,107],
'Product_Name': ['Auriculares', 'Bag', 'Zapatos', 'teléfono inteligente', 'Cepillo de dientes', 'Reloj de pulsera', 'laptop'],
'Categoría': ['Electrónica', 'moda', 'moda', 'electrónica', 'supermercado', 'moda', 'electrónica'],
'Precio': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_city': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
Cliente = PD.Marco de datos(
'Id': [1,2,3,4,5,6,7,8,9],
'Customer_name': ['Sara', 'sana', 'ali', 'raees', 'mahwish', 'umar', 'mirha', 'asif', 'maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_id': [101,0,106,0,103,104,0,0,107],
'Product_Purcheded': ['Auriculares', 'Na', 'Muñeco de muñeca', 'na', 'zapatos', 'teléfono inteligente', 'na', 'na', 'laptop']],
'Customer_city': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Imprimir (PD.fusionar (producto, cliente, on = 'product_id', cómo = 'exterior', indicador = true)))

Como puede ver en la siguiente captura de pantalla, los valores de la columna de fusión explican qué fila pertenece a qué marco de datos.

Izquierda unirse en pandas

Izquierda unirse solo a las filas de visualización de la izquierda DataFrame. Es similar a la unión externa. Entonces, cambie el valor del argumento 'cómo' con la "izquierda". Pruebe el siguiente código para implementar la idea de la izquierda

# Biblioteca de Pandas de importación
importar pandas como PD
Producto = PD.Marco de datos(
'Product_id': [101,102,103,104,105,106,107],
'Product_Name': ['Auriculares', 'Bag', 'Zapatos', 'teléfono inteligente', 'Cepillo de dientes', 'Reloj de pulsera', 'laptop'],
'Categoría': ['Electrónica', 'moda', 'moda', 'electrónica', 'supermercado', 'moda', 'electrónica'],
'Precio': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_city': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
Cliente = PD.Marco de datos(
'Id': [1,2,3,4,5,6,7,8,9],
'Customer_name': ['Sara', 'sana', 'ali', 'raees', 'mahwish', 'umar', 'mirha', 'asif', 'maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_id': [101,0,106,0,103,104,0,0,107],
'Product_Purcheded': ['Auriculares', 'Na', 'Muñeco de muñeca', 'na', 'zapatos', 'teléfono inteligente', 'na', 'na', 'laptop']],
'Customer_city': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Imprimir (PD.fusionar (producto, cliente, on = 'product_id', cómo = 'izquierda'))

Right Union en Pandas

La unión derecha mantiene todas las filas de marco de datos correctas a la derecha junto con las filas que también son comunes en el marco de datos de la izquierda. En este caso, el argumento "cómo" se establece como el valor "correcto". Ejecute el siguiente código para implementar el concepto de unión correcto:

# Biblioteca de Pandas de importación
importar pandas como PD
Producto = PD.Marco de datos(
'Product_id': [101,102,103,104,105,106,107],
'Product_Name': ['Auriculares', 'Bag', 'Zapatos', 'teléfono inteligente', 'Cepillo de dientes', 'Reloj de pulsera', 'laptop'],
'Categoría': ['Electrónica', 'moda', 'moda', 'electrónica', 'supermercado', 'moda', 'electrónica'],
'Precio': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_city': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
Cliente = PD.Marco de datos(
'Id': [1,2,3,4,5,6,7,8,9],
'Customer_name': ['Sara', 'sana', 'ali', 'raees', 'mahwish', 'umar', 'mirha', 'asif', 'maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_id': [101,0,106,0,103,104,0,0,107],
'Product_Purcheded': ['Auriculares', 'Na', 'Muñeco de muñeca', 'na', 'zapatos', 'teléfono inteligente', 'na', 'na', 'laptop']],
'Customer_city': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Imprimir (PD.fusionar (producto, cliente, on = 'product_id', cómo = 'correcto'))

En la siguiente captura de pantalla, puede ver el resultado después de ejecutar el código anterior:

Unión de marcos de datos utilizando la función concat ()

Se pueden unir dos marcos de datos utilizando la función concat. La sintaxis básica de la función de concatenación se da a continuación:

pd.concat ([df_obj1, df_obj_2]))

Se pasarán dos objetos de Dataframes como argumentos.

Unirnos tanto el producto de Dataframes como al cliente a través de la función Concat. Ejecute las siguientes líneas de código para unir dos marcos de datos:

# Biblioteca de Pandas de importación
importar pandas como PD
Producto = PD.Marco de datos(
'Product_id': [101,102,103,104,105,106,107],
'Product_Name': ['Auriculares', 'Bag', 'Zapatos', 'teléfono inteligente', 'Cepillo de dientes', 'Reloj de pulsera', 'laptop'],
'Categoría': ['Electrónica', 'moda', 'moda', 'electrónica', 'supermercado', 'moda', 'electrónica'],
'Precio': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_city': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
Cliente = PD.Marco de datos(
'Id': [1,2,3,4,5,6,7,8,9],
'Customer_name': ['Sara', 'sana', 'ali', 'raees', 'mahwish', 'umar', 'mirha', 'asif', 'maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_id': [101,0,106,0,103,104,0,0,107],
'Product_Purcheded': ['Auriculares', 'Na', 'Muñeco de muñeca', 'na', 'zapatos', 'teléfono inteligente', 'na', 'na', 'laptop']],
'Customer_city': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Imprimir (PD.concat ([producto, cliente]))

Conclusión:

En este artículo, hemos discutido la implementación de funciones de fusión (), concat () y se une a la operación en Pandas Python. Usando los métodos anteriores, puede unir fácilmente dos marcos de datos y aprender. Cómo implementar las operaciones de unión "interior, exterior, izquierda y derecha" en Pandas. Con suerte, este tutorial lo guiará para implementar las operaciones de unión en diferentes tipos de marcos de datos. Háganos saber acerca de sus dificultades en caso de error.