Combinar DataFrames : concat y merge

Introducción

A la hora de manipular conjuntos de datos, es muy común el tener que combinar datos de distintas fuentes, que contienen información complementaria sobre los mismos elementos o individuos. Dos instrucciones básicas para esta combinación es concat, que permite unir DataFrames concatenándolos o bien por  filas o bien por las columnas, y merge que permite une DataFrames en base a los valores de una o más columnas 

Unir DataFrames con concat

  Concatenar DataFrames por filas o por columnas

Transparencias asociadas al video
Concatener por filas en el caso en que los índices de los DataFrames tienen valores comunes

Transparencias asociadas al video
Queremos unir DataFrames por filas, qué pasa si tienen columnas diferentes?

Unir DataFrames con merge

Merge permite combinar dos DataFrames realizando la unión en base a los valores comunes de alguna(s) de su(s) columna(s)

  Descripción de merge

Si queréis reproducir los ejemplos, podéis copiar y pegar la definición de los DataFrames:

clientes= pd.DataFrame(

    {'dni': ['12345678', '23456789', '34567890', '01234567'],

     'nombre': ['José', 'Pedro', 'María', 'Blanca'],

     'apellido1': ['Pérez', 'Martínez', 'Sánchez', 'Ruiz'],

     'apellido2': ['Martínez', 'Moreno', 'Meseguer', 'Torres']

    }

)

pedidos= pd.DataFrame( 

    {'id': [10, 12, 21, 22, 24, 25, 28],

     'dni': np.repeat(

            ['23456789','12345678', '34567890', '87654321'],

            repeats=[2, 3, 1, 1]

            ),

     'id_producto': ['AAA123', 'SOX433',

                     'QWE000', 'SOX433', 'PII342', 'ZXY099','PII342']

    }

)

productos = pd.DataFrame(

    {

        'id': ['AAA123', 'SOX433',

                     'QWE000', 'PII342', 'ZXY099'],

        'nombre': ['Pila', 'Bombilla', 'Interruptor', 'Enchufe', 'Toma']

    }

)

Transparencias asociadas al video
Primeros pasos con merge y el parámetro 'how'

Transparencias asociadas al video
Podemos especificar en qué columnas se basa el merge con los parámetros on, left_on y right_on

Obtener información sobre el merge con el parámetro indicator