DataFrame
s por filas o columnas con etiquetas repetidas¶Qué pasa si quiero unir por filas dos
DataFrame
s que tienen etiquetas de filas repetidas?
# 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 |
df4 = pd.DataFrame(np.arange(40,46).reshape(2, 3), index=list('ij'), columns=list('abc'))
df4
a | b | c | |
---|---|---|---|
i | 40 | 41 | 42 |
j | 43 | 44 | 45 |
df1
ydf4
tienen las mismas columnas, pero además se repiten sus etiquetas de filas
Unimos df1
y df4
por filas:
pd.concat([df1, df4])
a | b | c | |
---|---|---|---|
i | 0 | 1 | 2 |
j | 3 | 4 | 5 |
k | 6 | 7 | 8 |
i | 40 | 41 | 42 |
j | 43 | 44 | 45 |
Se repiten las etiquetas en el resultado.
Tenemos dos opciones:
ignore_index=True
keys
claves que informen de qué DataFrame
procede cada filapd.concat([df1, df4], ignore_index=True)
a | b | c | |
---|---|---|---|
0 | 0 | 1 | 2 |
1 | 3 | 4 | 5 |
2 | 6 | 7 | 8 |
3 | 40 | 41 | 42 |
4 | 43 | 44 | 45 |
keys
¶pd.concat([df1, df4], keys=['df1', 'df4'])
a | b | c | ||
---|---|---|---|---|
df1 | i | 0 | 1 | 2 |
j | 3 | 4 | 5 | |
k | 6 | 7 | 8 | |
df4 | i | 40 | 41 | 42 |
j | 43 | 44 | 45 |