No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Join

21/24
Recursos

Join Es otra herramienta para hacer exactamente lo mismo, una combinación. La diferencia es que join va a ir a los índices y no a columnas específicas.

izq = pd.DataFrame({'A': ['A0','A1','A2'],
  'B':['B0','B1','B2']},
  index=['k0','k1','k2'])

der =pd.DataFrame({'C': ['C0','C1','C2'],
  'D':['D0','D1','D2']},
  index=['k0','k2','k3']) 
  • Combinamos izq con der
izq.join(der)
---> A  B   C   D
k0  A0  B0  C0  D0
k1  A1  B1  nan nan
k2  A2  B2  C1  D1
  • Traer todos los datos aunque no hagan match.
izq.join(der, how = 'outer')
---> A  B   C   D
k0  A0  B0  C0  D0
k1  A1  B1  nan nan
k2  A2  B2  C1  D1
k3  nan nan C2  D2

Pregunta:

En temas de performance y velocidad, ¿cuál es mejor el Merge o el Join, cuando se trata de miles de registros?
@gustavomp, Platzinauta

Respuesta:
join suele ser mejor
@alarcon7a, Profe Platzi

Contribución creada por: Edward Giraldo.

Aportes 18

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Diccionarios ocupados en esta clase 😄

izq = pd.DataFrame({'A': ['A0','A1','A2'],
  'B':['B0','B1','B2']},
  index=['k0','k1','k2'])

der =pd.DataFrame({'C': ['C0','C1','C2'],
  'D':['D0','D1','D2']},
  index=['k0','k2','k3']) 

¿Cuál es la principal diferencia entre merge y join en pandas?

  • Merge puede unificar df en base a los índices o a los valores de las columnas.
  • Join solo lo puede hacer en base a los índices. Es una caso específico de merge.

Ya estamos en la recta final, ánimos! 😀

Este artículo explica el merge, join y concatenar comparando sus diferencias.
https://realpython.com/pandas-merge-join-and-concat/

El “rigth” deberia ser considerada palabra reservada! 😄

Un aporte, hay que tener en cuanta siempre cual va a ser tu dataframe principal para unirlo o relacionarlo con otros, recordar que en sql hay reglas (uno - varios, p eje)

Información resumida de esta clase
#EstudiantesDePlatzi

  • Join a diferencia del merge, utilizará los índices de nuestros DataFrame para realizar el match y no a las columnas

  • También utilizamos el parámetro how para definir el tipo de unión que se va a realizar

Mi código de hoy:

##Join - index match
data_frame_izq_04= pd.DataFrame({'A':['A0','A1','A2'],
'B':['B0','B1','B2']}, index= ['k0','k1','k2'])

data_frame_der_04= pd.DataFrame({'C':['C0','C1','C2'],
'D':['D0','D1','D2']}, index= ['k0','k2','k3'])

print(f'joining: \n {data_frame_izq_04.join(data_frame_der_04)}')
print(f'joining by inner: \n {data_frame_izq_04.join(data_frame_der_04, how= "inner")}')
print(f'joining by left: \n {data_frame_izq_04.join(data_frame_der_04, how= "left")}')
print(f'joining by right: \n {data_frame_izq_04.join(data_frame_der_04, how= "right")}')
print(f'joining by outer: \n {data_frame_izq_04.join(data_frame_der_04, how= "outer")}')

El parámetro on hace referencia a las llaves o keys (en SQL), para que hagan una relación entre los diferentes dataframes. Es opcional, si no se especifica y ‘left_index’ y ‘right_index’ son ‘False’, entonces las columnas que compartan el mismo nombre se utilizarán como llaves.

1. **Concatenación (concat):** * La concatenación se utiliza para unir DataFrames o Series a lo largo de un eje existente. Puedes concatenar objetos a lo largo de las filas o columnas. * No realiza ninguna alineación basada en columnas; simplemente apila los datos uno encima del otro o uno al lado del otro. * Es útil para combinar conjuntos de datos que tienen las mismas columnas y estructura, pero diferentes filas. 2. **Unión (join):** * La operación de unión se utiliza para combinar DataFrames basándose en las etiquetas de índice o columnas comunes. * Las uniones son similares a las operaciones SQL JOIN y permiten combinar dos o más DataFrames en función de una o más columnas clave. * Las uniones se utilizan para combinar información de diferentes DataFrames que comparten una relación común. 3. **Fusión (merge):** * La fusión es similar a la unión, pero es específica de pandas. Es una forma más poderosa de combinar DataFrames, ya que permite una mayor flexibilidad en la especificación de cómo se realizará la fusión. * Puedes fusionar DataFrames en función de múltiples columnas y especificar el tipo de unión (interna, externa, izquierda, derecha) y cómo se manejarán los valores faltantes. * La fusión es especialmente útil cuando se trabaja con datos complejos y se requiere un control preciso sobre cómo se combinan los DataFrames.

join es muy útil, y me parece que con el atributo outer es más completa la concatenación:

izq.join(der, how='outer')

Recomiendo que revisen lsuffix y rsuffix esta en la documentación que esta adjuntado en esta clase sirve cuando tengamos datos de cantidad diferentes y tener una mejor visualización del dataframe por indexación.

izq = pd.DataFrame({'A':['A0','A1','A2'],
'B':['B0','B1','B2']},
index =['K0','K1','K2'])

der = pd.DataFrame({'C':['C0','C1','C2'],
'D':['D0','D1','D2']},
index = ['K0','K2','K3'])
izq.join(der,how='inner')

Mis apuntes #22 (Notion)

trabajando con join


Join Es otra herramienta para hacer exactamente lo mismo, una combinación. La diferencia es que join va a ir a los índices y no a columnas específicas.
________________________________________
[3]
0 s
import  pandas as pd
import numpy as np
________________________________________
[2]
0 s
izq = pd.DataFrame({'A': ['A0','A1','A2'],
  'B':['B0','B1','B2']},
  index=['k0','k1','k2'])

der =pd.DataFrame({'C': ['C0','C1','C2'],
  'D':['D0','D1','D2']},
  index=['k0','k2','k3']) 
________________________________________
[4]
izq.join(der)
#esta va directamente hacia los índices Combinamos izq con der
________________________________________
[5]
izq.join(der,how="inner")
#index a nivel de math trae solo dos filas del dataframe 
________________________________________
[7]
0 s
izq.join(der,how="left")
________________________________________
[8]
0 s
izq.join(der,how="right")
________________________________________
[9]
izq.join(der,how="outer")
#aca respeta los join pero sin importa en que posicion se encuentre completando los datos con nan 
________________________________________
join proporciona una estructura muy parecida a marge, al igual es para combinar dataframe pero lo hace directamente con el index