¿Cómo evitar que Python / Pandas cree un índice en un csv guardado?


407

Estoy tratando de guardar un csv en una carpeta después de hacer algunas modificaciones en el archivo.

Cada vez que uso pd.to_csv('C:/Path of file.csv')el archivo csv tiene una columna separada de índices. Quiero evitar imprimir el índice en csv.

Lo intenté:

pd.read_csv('C:/Path to file to edit.csv', index_col = False)

Y para guardar el archivo ...

pd.to_csv('C:/Path to save edited file.csv', index_col = False)

Sin embargo, todavía recibí la columna de índice no deseada. ¿Cómo puedo evitar esto cuando guardo mis archivos?


59
intente en index=Falselugar deindex_col
Jeff

¿Podemos usar esto también en ms excel?
Nabih Ibrahim Bawazir

Sí, puedespd.to_excel(r'file.xlsx', index = False)
bfree67

index_colque funciona para read_html()así.
caram

Respuestas:



89

Hay dos formas de manejar la situación en la que no queremos que el índice se almacene en un archivo csv.

  1. Como otros han dicho, puede usar index = False mientras guarda su
    marco de datos en un archivo csv.

    df.to_csv('file_name.csv',index=False)

  2. O puede guardar su marco de datos tal como está con un índice, y mientras lee, simplemente suelta la columna sin nombre 0 que contiene su índice anterior. ¡Simple!

    df.to_csv(' file_name.csv ')
    df_new = pd.read_csv('file_name.csv').drop(['unnamed 0'],axis=1)


1
"y mientras lee, simplemente suelta la columna sin nombre 0 que contiene su índice anterior" una mejor manera de hacerlo es especificar pd.read_csv(..., index_col=[0]y evitar la llamada adicional "soltar".
cs95

30

Si no desea un índice, lea el archivo usando:

import pandas as pd
df = pd.read_csv('file.csv', index_col=0)

guardarlo usando

df.to_csv('file.csv', index=False)

2
No puedo creer que nadie haya notado el error. Para guardar en csv, seríadf.to_csv('file.csv', index=False)
MEdwin

1
Jajaja nadie prestando atención. Gracias.
amalik2205

22

Como han dicho otros, si no desea guardar la columna de índice en primer lugar, puede usar df.to_csv('processed.csv', index=False)

Sin embargo, dado que los datos que usas habitualmente tienen algún tipo de índice, digamos una columna de "marca de tiempo", conservaría el índice y cargaría los datos usándolo.

Entonces, para guardar los datos indexados, primero configure su índice y luego guarde el DataFrame:

df.set_index('timestamp')
df.to_csv('processed.csv')

Luego, puede leer los datos con el índice:

pd.read_csv('processed.csv', index_col='timestamp')

o leer los datos y luego establecer el índice:

pd.read_csv('filename.csv')
pd.set_index('column_name')

Si configuré index_col y luego lo guardé, todavía tenía una columna numérica sin nombre en el csv. (Python2)
smiller

14

Otra solución si desea mantener esta columna como índice.

pd.read_csv('filename.csv', index_col='Unnamed: 0')

1
Exactamente lo que estaba buscando, gracias. Eso de alguna manera ayuda a traducir el concepto de clave primaria de manera transparente, incluso cuando se usa csv
Tobbey

7

Si desea un buen formato, la siguiente declaración es la mejor:

dataframe_prediction.to_csv('filename.csv', sep=',', encoding='utf-8', index=False)

En este caso, tiene un archivo csv con ',' como separación entre columnas y formato utf-8. Además, el índice numérico no aparecerá.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.