English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ejemplo de operación de conexión de Pandas
Pandas tiene operaciones de unión en memoria de alta velocidad y completamente funcional que son muy similares a las bases de datos relacionales como SQL.
Pandas proporciona una única función merge como punto de entrada para todas las operaciones de unión estándar entre objetos DataFrame.
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True)
Aquí, hemos utilizado los siguientes parámetros:
a la izquierda − Un objeto DataFrame. a la derecha − Otro objeto DataFrame. on − La columna (nombre) se agrega aquí. Debe encontrarse en ambos objetos DataFrame. left_on − Las columnas del DataFrame izquierdo se utilizan como clave. Puede ser el nombre de la columna o un array de longitud igual a la longitud del DataFrame. right_on − Las columnas del DataFrame derecho se utilizan como clave. Puede ser el nombre de la columna o un array de longitud igual a la longitud del DataFrame. left_index − Si es True, se utiliza el índice izquierdo (etiqueta de fila) del DataFrame izquierdo como su clave de conexión. Si el DataFrame tiene MultiIndex (jerárquico), el número de niveles debe coincidir con el número de claves de conexión en el DataFrame derecho. right_index − Usado de manera idéntica como left_index para el marco de datos correcto. how − Uno de los siguientes: 'izquierda', 'derecha', 'exterior', 'interior'. Por defecto, es interno. Cada método se describe a continuación. sort − Los datos resultantes de la ordenación se insertan en el cuadro de datos en orden diccionario. Por defecto, es True, en muchos casos, establecerlo en False aumentará significativamente el rendimiento.
现在让我们创建两个不同的DataFrame并对其执行合并操作。
# import the pandas library import pandas as pd left = pd.DataFrame({ 'id': [1,2,3,4,5, 'Nombre': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']}) right = pd.DataFrame( {'id':[1,2,3,4,5, '], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365}) print(left print(right)
Los resultados de la ejecución son los siguientes:
Name id subject_id 0 Alex 1 sub1 1 Amy 2 sub2 2 Allen 3 sub4 3 Alice 4 sub6 4 Ayoung 5 sub5 Name id subject_id 0 Billy 1 sub2 1 Brian 2 sub4 2 Bran 3 sub3 3 Bryce 4 sub6 4 Betty 5 sub5
import pandas as pd left = pd.DataFrame({ 'id': [1,2,3,4,5, 'Nombre': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']}) right = pd.DataFrame({ 'id': [1,2,3,4,5, '], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365']}) print(pd.merge(left, right, on='id'))
Los resultados de la ejecución son los siguientes:
Name id subject_id_x Name_y subject_id_y 0 Alex 1 sub1 Billy sub2 1 Amy 2 sub2 Brian sub4 2 Allen 3 sub4 Bran sub3 3 Alice 4 sub6 Bryce sub6 4 Ayoung 5 sub5 Betty sub5
import pandas as pd left = pd.DataFrame({ 'id': [1,2,3,4,5, 'Nombre': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']}) right = pd.DataFrame({ 'id': [1,2,3,4,5, '], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365']}) print(pd.merge(left, right, on=['id', 'subject_id']))
Los resultados de la ejecución son los siguientes:
Name_x id subject_id Name_y 0 Alice 4 sub6 Bryce 1 Ayoung 5 sub5 Betty
el parámetro how de combinación especifica cómo determinar qué claves deben incluirse en la tabla de resultados. Si la clave combinada no aparece en ninguna de las tablas izquierda o derecha, el valor en la tabla de combinación es NA.
aquí hay un resumen de cómo elegir y sus nombres equivalentes SQL:
método de combinación | equivalente SQL | descripción |
a la izquierda | LEFT OUTER JOIN | usar la clave del objeto izquierdo |
a la derecha | RIGHT OUTER JOIN | usar la clave correcta del objeto |
externo | FULL OUTER JOIN | usar la clave combinada |
interno | JOIN INTERNO | usar la intersección de las claves |
import pandas as pd left = pd.DataFrame({ 'id': [1,2,3,4,5, 'Nombre': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']}) right = pd.DataFrame({ 'id': [1,2,3,4,5, '], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365']}) print(pd.merge(left, right, on='subject_id', how='left'))
Los resultados de la ejecución son los siguientes:
Nombre_x id_x subject_id Nombre_y id_y 0 Alex 1 sub1 NaN NaN 1 Amy 2 sub2 Billy 1.0 2 Allen 3 sub4 Brian 2.0 3 Alice 4 sub6 Bryce 4.0 4 Ayoung 5 sub5 Betty 5.0
import pandas as pd left = pd.DataFrame({ 'id': [1,2,3,4,5, 'Nombre': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']}) right = pd.DataFrame({ 'id': [1,2,3,4,5, '], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365']}) print(pd.merge(left, right, on='subject_id', how='right'))
Los resultados de la ejecución son los siguientes:
Name_x id_x subject_id Name_y id_y 0 Amy 2.0 sub2 Billy 1 1 Allen 3.0 sub4 Brian 2 2 Alice 4.0 sub6 Bryce 4 3 Ayoung 5.0 sub5 Betty 5 4 NaN NaN sub3 Bran 3
import pandas as pd left = pd.DataFrame({ 'id': [1,2,3,4,5, 'Nombre': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']}) right = pd.DataFrame({ 'id': [1,2,3,4,5, '], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365']}) print(pd.merge(left, right, how='outer', on='subject_id'))
Los resultados de la ejecución son los siguientes:
Name_x id_x subject_id Name_y id_y 0 Alex 1.0 sub1 NaN NaN 1 Amy 2.0 sub2 Billy 1.0 2 Allen 3.0 sub4 Brian 2.0 3 Alice 4.0 sub6 Bryce 4.0 4 Ayoung 5.0 sub5 Betty 5.0 5 NaN NaN sub3 Bran 3.0
La conexión se ejecutará en el índice. La operación de unión acepta el objeto que la llama. Por lo tanto, a.join(b) no es igual a b.join(a).
import pandas as pd left = pd.DataFrame({ 'id': [1,2,3,4,5, 'Nombre': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],12465']}) right = pd.DataFrame({ 'id': [1,2,3,4,5, '], 'Nombre': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],24365']}) print(pd.merge(left, right, on='subject_id', how='inner'))
Los resultados de la ejecución son los siguientes:
Nombre_x id_x subject_id Nombre_y id_y 0 Amy 2 sub2 Billy 1 1 Allen 3 sub4 Brian 2 2 Alice 4 sub6 Bryce 4 3 Ayoung 5 sub5 Betty 5