DataFrame
s por filas o columnas¶Es una operación corriente.
Consiste en unir dos
DataFrame
s, 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.
# Preliminares
import pandas as pd
import numpy as np
Consideramos los dos DataFrame
s:
df1 = pd.DataFrame(np.arange(9).reshape(3, 3), index=list('ijk'), columns=list('abc'))
df1
a | b | c | |
---|---|---|---|
i | 0 | 1 | 2 |
j | 3 | 4 | 5 |
k | 6 | 7 | 8 |
df2 = pd.DataFrame(np.arange(20, 26).reshape(2, 3), index=list('lm'), columns=list('abc'))
df2
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 DataFrame
s a pd.concat
:
pd.concat([df1, df2])
a | b | c | |
---|---|---|---|
i | 0 | 1 | 2 |
j | 3 | 4 | 5 |
k | 6 | 7 | 8 |
l | 20 | 21 | 22 |
m | 23 | 24 | 25 |
Usamos el parámetro axis
que por defecto es igual a 0 (filas).
# Introducimos un nuevo DataFrame para ilustrarlo
df3 = pd.DataFrame(
np.arange(30, 36).reshape(3, 2),
index=list('ijk'),
columns=list('df')
)
df3
d | f | |
---|---|---|
i | 30 | 31 |
j | 32 | 33 |
k | 34 | 35 |
pd.concat([df1, df3], axis=1)
a | b | c | d | f | |
---|---|---|---|---|---|
i | 0 | 1 | 2 | 30 | 31 |
j | 3 | 4 | 5 | 32 | 33 |
k | 6 | 7 | 8 | 34 | 35 |
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.
df3 = df3.loc[::-1,:]
df3
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:
pd.concat([df1, df3], axis=1)
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
.