Recopilación de las uniones más habituales con Python Pandas en una sola entrada. No se realiza equivalencias con sql join, la intención es tener de forma resumida los códigos para realizar left join inner join y concatenación de data frames de Pandas. Hay amplia documentación esto es una síntesis.
Los data frames empleados para ilustrar el ejemplo son:
import pandas as pd import numpy as np ejemplo = { "variable1": [10, 20, 30, 40], "variable2": [100, 200, 300, 400] } anio=["2011", "2012", "2013", "2014"] df1 = pd.DataFrame(ejemplo,index=anio) df1
ejemplo = { "variable1": [50, 60, 70, 80], "variable3": [5000, 6000, 7000, 8000] } anio=["2013", "2014", "2015", "2016"] df2 = pd.DataFrame(ejemplo,index=anio) df2
Uniones de data frames con índices
La estructura de una join con Pandas es:
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
Left Join
left_join = pd.merge(df1, df2, how='left', on=None, left_on=None, right_on=None, left_index=True, right_index=True, sort=True) left_join
Outer Join
outer_join = pd.merge(df1, df2, how='outer', on=None, left_on=None, right_on=None, left_index=True, right_index=True, sort=True) outer_join
Right Join
right_join = pd.merge(df1, df2, how='right', on=None, left_on=None, right_on=None, left_index=True, right_index=True, sort=True) right_join
Inner Join
inner_join = pd.merge(df1, df2, how='inner', on=None, left_on=None, right_on=None, left_index=True, right_index=True, sort=True) inner_join
Concatenar
Concatenación simple
concatenar = pd.concat([df1,df2]) concatenar
Concatenación inner
concatenar_inner = pd.concat([df1,df2],join="inner") concatenar_inner
Concatenación outer
concatenar_outer = pd.concat([df1,df2],join="outer") concatenar_outer
Uniones sin índices
Data frames de ejemplo análogos a los anteriores.
import pandas as pd import numpy as np ejemplo = { "variable1": [10, 20, 30, 40], "variable2": [100, 200, 300, 400], "anio": ["2011", "2012", "2013", "2014"] } df1 = pd.DataFrame(ejemplo) ejemplo = { "variable1": [50, 60, 70, 80], "variable3": [5000, 6000, 7000, 8000], "anio": ["2013", "2014", "2015", "2016"] } df2 = pd.DataFrame(ejemplo)
Si no tenemos índices es importante especificar en el parámetro on= la variable con la que hacemos la unión de las tablas. En este caso ponemos todas las uniones:
Left, outer, right con campo de unión común
left_join = pd.merge(df1, df2, how='left', on='anio') outer_join = pd.merge(df1, df2, how='outer', left_on=df1['anio'], right_on=df2['anio']) right_join = pd.merge(df1, df2, how='right', on='anio')
Inner join con campo de unión de distinto nombre
#Renombramos la variable anio df2 = df2.rename(columns={"anio": "fecha"}) inner_join = pd.merge(df1, df2, how='inner', left_on='anio', right_on='fecha')
Uniones más habituales en una sola entrada y en pocas líneas de código.