HOWTO · Python
Importe múltiples archivos CSV en Pandas y concatene en un marco de datos
Este tutorial demuestra cómo importar múltiples archivos CSV usando Pandas y concatenarlos en un solo DataFrame.
En esta página
Carga cada archivo CSV coincidente con pandas.read_csv() y combina los DataFrames resultantes con pd.concat(). El proceso consiste en buscar los archivos en una carpeta, leerlos en un orden predecible y crear un único DataFrame con un índice de filas nuevo. Instala primero el paquete pandas si aún no está disponible en tu entorno de Python.
Leer un solo archivo CSV con pandas
El paquete pandas ofrece read_csv() para cargar un archivo CSV en un DataFrame. Para un solo archivo, llama a df = pd.read_csv("sales.csv") y sustituye el nombre del archivo por la ruta a tus datos. De forma predeterminada, la función interpreta la primera fila como nombres de columnas; revisa las etiquetas de columna del DataFrame resultante para comprobar que el archivo se haya analizado como esperabas. Esta misma operación se aplica a cada ruta del proceso para leer varios archivos.
Buscar archivos CSV con glob y construir rutas
El módulo glob de la biblioteca estándar de Python encuentra rutas que coinciden con un patrón, así que no hace falta instalar un paquete aparte. glob.glob() devuelve una lista con las rutas coincidentes. Combina una carpeta y un patrón de nombre de archivo con os.path.join() para que Python construya una ruta con el separador adecuado para cada plataforma:
pattern = os.path.join(folder, "*.csv")
El patrón *.csv selecciona los archivos CSV que están directamente dentro de la carpeta elegida. Para incluir subcarpetas, utiliza un patrón glob recursivo y establece recursive=True en la llamada a glob.glob(). En Windows, una cadena sin procesar como r"C:\data\sales" evita que las barras invertidas se interpreten como secuencias de escape; os.path.join() puede añadir el patrón de nombre de archivo a esa ruta de carpeta.
Leer varios archivos CSV y concatenar los DataFrames
Recopila las rutas coincidentes, llama a read_csv() una vez por cada ruta y pasa los DataFrames resultantes a pd.concat(..., ignore_index=True). Este ejemplo completo crea dos archivos CSV pequeños en una carpeta temporal, por lo que puede ejecutarse tal cual, sin archivos adicionales. Para usar tus propios datos, sustituye la creación de archivos de muestra por una ruta folder y conserva los pasos de búsqueda de rutas, lectura y concatenación. Si el patrón no encuentra archivos, el ejemplo muestra un mensaje y omite la lectura y la concatenación. Cuando hay coincidencias, la impresión final muestra las filas combinadas.
import glob
import os
import tempfile
from pathlib import Path
import pandas as pd
with tempfile.TemporaryDirectory() as temp_dir:
folder = Path(temp_dir)
(folder / "jan.csv").write_text("month,sales\nJan,10\n", encoding="utf-8")
(folder / "feb.csv").write_text("month,sales\nFeb,12\n", encoding="utf-8")
pattern = os.path.join(str(folder), "*.csv")
csv_paths = sorted(glob.glob(pattern))
if not csv_paths:
print("No CSV files found.")
else:
dataframes = [pd.read_csv(csv_path) for csv_path in csv_paths]
combined = pd.concat(dataframes, ignore_index=True)
print(combined.to_string(index=False))
month sales
Feb 12
Jan 10
Ordenar las rutas hace predecible el orden de los archivos: las filas siguen ese orden y mantienen su orden original dentro de cada archivo. ignore_index=True asigna un índice secuencial nuevo a todas las filas combinadas. Si los archivos tienen nombres de columna distintos, pandas alinea los valores según la etiqueta de cada columna y rellena los valores que faltan con NaN; utiliza nombres de columna coherentes cuando cada fila deba representar los mismos campos. Comprueba que la lista de coincidencias contenga archivos antes de concatenar, ya que pd.concat() necesita al menos un DataFrame. Si no hay coincidencias, ajusta la carpeta o el patrón antes de ejecutar los pasos de lectura y combinación.