Cómo arreglar 'Unnamed: 0' en Pandas — guía completa
La columna 'Unnamed: 0' es uno de los errores de Pandas más googleados. Aparece cuando un CSV se guardó con df.to_csv() sin index=False, escribiendo el índice del DataFrame como primera columna sin nombre. Aquí cuatro formas de arreglarlo.
Método 1: Evitarlo (lo mejor)
Al guardar: df.to_csv('data.csv', index=False). Esto omite la columna de índice por completo. Si el índice lleva datos útiles (como un índice de fechas), nómbralo primero: df.index.name = 'date' — entonces Pandas escribe un encabezado real.
Método 2: Arreglar al leer
Al cargar un CSV que ya tiene el índice sin nombre: df = pd.read_csv('data.csv', index_col=0). Esto le dice a Pandas que trate la columna 0 como índice en vez de dato. El nombre 'Unnamed: 0' desaparece porque pasa a ser el índice, no una columna de datos.
Método 3: Borrar la columna tras cargar
Si ya cargaste el DataFrame: df = df.drop(columns=['Unnamed: 0']). O más robusto: df = df.loc[:, ~df.columns.str.contains('^Unnamed')]. Esto elimina TODAS las columnas sin nombre independientemente de cuántas haya.
Método 4: Arreglar el propio CSV
Si necesitas arreglar el CSV una vez y compartirlo (p. ej. subirlo a una base de datos, mandarlo a un compañero): usa CSV First Aid. Suelta el archivo, el fix 'Pandas unnamed index' auto-detecta y quita la columna, descargas un CSV limpio.
Es el mejor enfoque cuando: no controlas el código que lee el archivo, lo compartes con no-usuarios de Python, o quieres arreglarlo permanentemente en vez de añadir index_col=0 por todas partes.
¿Por qué ocurre?
to_csv() de Pandas incluye el índice por defecto porque los DataFrames siempre tienen un índice. Cuando creas un DataFrame desde una lista o dict sin especificar índice, Pandas auto-genera un RangeIndex (0, 1, 2, ...). Al exportar, eso se escribe como primera columna sin nombre.
Al re-leer, Pandas no puede distinguirlo de una columna de datos real, así que lo carga como dato y genera el nombre 'Unnamed: 0' (porque la celda de encabezado está vacía).
¿Python no instalado? CSV First Aid quita la columna Unnamed: 0 en el navegador.
Arregla tu CSV ahora →Herramientas relacionadas
Eliminar la columna 'Unnamed: 0' de un CSV
¿La primera columna no tiene nombre y contiene 0, 1, 2, 3…? Alguien ejecutó to_csv() sin index=False. Detectamos el índice filtrado y lo quitamos — los datos reales vuelven a la columna A.
Arreglar encabezados CSV
Dos columnas llamadas 'Name' y tu importador SQL pete, o Pandas las renombra silenciosamente a Name y Name.1. Renombramos los duplicados a Name, Name_1, Name_2 — las importaciones dejan de fallar.
Eliminar filas vacías de un CSV
Las filas en blanco se esconden entre tus datos y arruinan recuentos, importaciones y SUM(). Revisamos cada fila y quitamos aquellas donde todas las celdas están vacías. Un solo valor en cualquier celda y la fila se queda.