Concatenar DataFrames por filas o columnas¶

Es una operación corriente.

Consiste en unir dos DataFrames, poniendo las filas del segundo a continuación de las filas del primero, o las columnas del segundo a continuación de las columnas del primero.

In [1]:
# Preliminares
import pandas as pd
import numpy as np

Consideramos los dos DataFrames:

In [3]:
df1 = pd.DataFrame(np.arange(9).reshape(3, 3), index=list('ijk'), columns=list('abc'))
df1
Out[3]:
a b c
i 0 1 2
j 3 4 5
k 6 7 8
In [4]:
df2 = pd.DataFrame(np.arange(20, 26).reshape(2, 3), index=list('lm'), columns=list('abc'))
df2
Out[4]:
a b c
l 20 21 22
m 23 24 25

En su versión más sencilla, pasamos un iterable (lista por ejemplo) de DataFrames a pd.concat:

In [5]:
pd.concat([df1, df2])
Out[5]:
a b c
i 0 1 2
j 3 4 5
k 6 7 8
l 20 21 22
m 23 24 25

Para concatenar por las columnas¶

Usamos el parámetro axis que por defecto es igual a 0 (filas).

In [8]:
# Introducimos un nuevo DataFrame para ilustrarlo
df3 = pd.DataFrame(
    np.arange(30, 36).reshape(3, 2),
    index=list('ijk'), 
    columns=list('df')
)
df3
Out[8]:
d f
i 30 31
j 32 33
k 34 35
In [7]:
pd.concat([df1, df3], axis=1)
Out[7]:
a b c d f
i 0 1 2 30 31
j 3 4 5 32 33
k 6 7 8 34 35

El método concat alinea las filas o las columnas antes de realizar la unión¶

Para demostrarlo, cambiemos las filas de df3, usando el "slicing" con un step negativo.

In [11]:
df3 = df3.loc[::-1,:]
df3
Out[11]:
d f
k 34 35
j 32 33
i 30 31

Al unirlos por las columnas, pd.concat alinea las filas basándose en sus etiquetas:

In [12]:
pd.concat([df1, df3], axis=1)
Out[12]:
a b c d f
i 0 1 2 30 31
j 3 4 5 32 33
k 6 7 8 34 35

Obtenemos el mismo resultado que antes de cambiar el orden de las filas de df3.