DataFrames por filas o columnas con etiquetas repetidas¶Qué pasa si quiero unir por filas dos
DataFrames que tienen etiquetas de filas repetidas?
# Preliminares
import pandas as pd
import numpy as np
Consideramos los dos DataFrames:
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 |
df1ydf4tienen 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=Truekeys 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 |