4Geeks chosen to deliver AI education in the Bahamas alongside Harvard, Oxford, and Columbia.See more

¿Cómo usar el método concat de Pandas?

By 4Geeks

Une DataFrames uno debajo o al lado de otro, renumera el índice, junta todos los CSV de una carpeta y sabe cuándo usar merge().

6 min readLast updated
Icono de pandas concat

¿Cómo unir DataFrames con concat() en pandas?

Respuesta corta: pd.concat() pega varios DataFrames en uno. Por defecto los apila uno debajo de otro (axis=0). Con axis=1 los pone uno al lado de otro, y con ignore_index=True renumera las filas.

python
import pandas as pd
 
enero = pd.DataFrame({"producto": ["Café", "Té"], "ventas": [120, 80]})
febrero = pd.DataFrame({"producto": ["Café", "Té"], "ventas": [150, 95]})
 
print(pd.concat([enero, febrero], ignore_index=True))
  producto  ventas
0     Café     120
1       Té      80
2     Café     150
3       Té      95

Los DataFrames van siempre dentro de una lista. Sin ignore_index=True, el resultado conserva los índices originales y verás 0, 1, 0, 1.

axis=0 apila filas y axis=1 pega columnas.

Sintaxis de pd.concat()

python
pd.concat(
    objs,
    axis=0,
    join="outer",
    ignore_index=False,
    keys=None,
    names=None,
    verify_integrity=False,
    sort=False,
)
ParámetroQué hace
objsLa lista de DataFrames o Series que quieres unir
axis0 apila filas (por defecto) y 1 pega columnas
join"outer" conserva todas las columnas y "inner" solo las comunes
ignore_indexCrea un índice nuevo 0, 1, 2...
keysAñade una etiqueta por cada DataFrame de origen
namesNombres para los niveles del índice que crea keys
verify_integrityDa error si el resultado tiene índices repetidos
sortOrdena las columnas cuando no coinciden

Ejemplos de concat() en pandas

Apilar filas con los índices originales

python
print(pd.concat([enero, febrero]))
  producto  ventas
0     Café     120
1       Té      80
0     Café     150
1       Té      95

Los índices repetidos dan problemas al usar loc, así que en la mayoría de casos conviene ignore_index=True.

Saber de qué DataFrame viene cada fila

Con keys, cada bloque lleva su etiqueta en el índice:

python
ventas = pd.concat([enero, febrero], keys=["ene", "feb"])
print(ventas)
      producto  ventas
ene 0     Café     120
    1       Té      80
feb 0     Café     150
    1       Té      95

ventas.loc["feb"] devuelve solo las filas de febrero. Si prefieres una columna normal, añádela antes de unir: pd.concat([enero.assign(mes="ene"), febrero.assign(mes="feb")], ignore_index=True).

Pegar columnas con axis=1

python
precios = pd.DataFrame({"precio": [2.5, 2.0]})
 
print(pd.concat([enero, precios], axis=1))
  producto  ventas  precio
0     Café     120     2.5
1       Té      80     2.0

Con axis=1 pandas alinea las filas por el índice, no por su posición. Si los índices no coinciden, aparecen NaN.

DataFrames con columnas distintas

python
marzo = pd.DataFrame({"producto": ["Café"], "ventas": [130], "tienda": ["Centro"]})
 
print(pd.concat([enero, marzo], ignore_index=True))
  producto  ventas  tienda
0     Café     120     NaN
1       Té      80     NaN
2     Café     130  Centro

Con join="inner" el resultado se queda solo con las columnas que tienen todos: producto y ventas.

Añadir una fila a un DataFrame

append() ya no existe en pandas 2 ni en pandas 3. Para añadir filas, crea un DataFrame con ellas y únelo con concat():

python
nueva = pd.DataFrame([{"producto": "Agua", "ventas": 40}])
 
enero = pd.concat([enero, nueva], ignore_index=True)

Unir muchos archivos CSV

python
from pathlib import Path
 
archivos = sorted(Path("datos").glob("ventas_*.csv"))
todo = pd.concat([pd.read_csv(f) for f in archivos], ignore_index=True)

Crear una lista y llamar a concat() una sola vez es mucho más rápido que unir dentro de un bucle.

Carrera · Ingeniería de IA

Ya sabes unir tablas con pandas, ahora construye con IA

De cero a AI Engineer junior: Python, datos, agentes de IA y RAG con mentores y proyectos reales.

concat() frente a merge() y join()

MétodoCómo uneÚsalo para
concat()Apila tablas una debajo o al lado de otraJuntar datos con las mismas columnas, como ventas de varios meses
merge()Por columnas clave, como un JOIN de SQLCombinar tablas relacionadas, como clientes y pedidos
join()Por el índice, left por defectoAñadir columnas de otra tabla con el mismo índice

Si necesitas cruzar dos tablas por una columna en común, mira cómo usar merge() en pandas.

Usa concat() con IA

Un asistente como ChatGPT, Claude o GitHub Copilot escribe el concat() correcto en segundos si le dices qué tablas tienes y qué resultado esperas. Estos tres prompts están listos para copiar.

1. Une tus DataFrames

Tengo estos DataFrames de pandas: [nombres y columnas de cada uno].
Quiero [apilarlos uno debajo de otro / ponerlos uno al lado de otro / saber de qué tabla viene cada fila].
Escribe el código con pd.concat() y explícame cada parámetro que usas.

2. Junta todos los archivos de una carpeta

Tengo una carpeta con archivos [CSV / Excel] llamados [patrón de nombre] con las mismas columnas.
Escribe el código para leerlos todos y unirlos en un solo DataFrame con una columna que diga de qué archivo viene cada fila.

3. Arregla un concat() con NaN o filas repetidas

Mi pd.concat() devuelve [columnas llenas de NaN / índices repetidos / más filas de las esperadas]:
[pega tu código y df1.head(), df2.head(), df1.columns y df2.columns]
Explícame la causa y dame la corrección.

Comprueba siempre el resultado con len(), df.columns y df.head() antes de seguir trabajando con los datos.

Aprende con un mentor

De juntar DataFrames a aplicaciones con IA

En la carrera de Ingeniería de IA de 4Geeks empiezas sin experiencia y terminas con agentes de IA y sistemas RAG en tu portafolio.

Errores comunes con concat()

Lo que vesPor qué pasaSolución
TypeError: concat() takes 1 positional argument but 2 were givenPasaste los DataFrames sueltos: pd.concat(df1, df2)Mételos en una lista: pd.concat([df1, df2])
AttributeError: 'DataFrame' object has no attribute 'append'append() se eliminó en pandas 2Usa pd.concat([df, nuevas_filas], ignore_index=True)
ValueError: No objects to concatenateLa lista está vacía, por ejemplo porque no se encontró ningún archivoRevisa la ruta y comprueba len(lista) antes de unir
Índices repetidos (0, 1, 0, 1)concat() conserva los índices originalesAñade ignore_index=True
ValueError: Indexes have overlapping valuesUsaste verify_integrity=True y hay índices repetidosUsa ignore_index=True o revisa los duplicados
Columnas llenas de NaNLas tablas tienen columnas con nombres distintos, o con axis=1 los índices no coincidenRevisa df.columns, usa join="inner" o reset_index(drop=True) antes de unir
Los enteros pasan a decimalesAl aparecer NaN en una columna de enteros, pandas la convierte en float64Rellena con fillna() y vuelve a astype(int)

Guías relacionadas

Descarga gratis

pandas concat() en una chuleta de 2 páginas

Apilar filas y pegar columnas, los parámetros clave, qué pasa con el índice, recetas para unir archivos, errores comunes y prompts para ChatGPT, Claude o Copilot. Gratis, en PDF.

Chuleta de pandas concat()

2 páginas · PDF · 4Geeks

  • Recetas de concat() listas para copiar
  • concat(), merge() o join(): cuál usar
  • Errores comunes y prompts para resolverlos con IA

Consíguela gratis

Tu PDF al instante

Preguntas frecuentes sobre pandas concat()

¿Quieres pasar de unir tablas con pandas a construir aplicaciones con IA, con proyectos reales y mentores?

Ver la carrera de Ingeniería de IA