¿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?

Alexis
fuente
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:

606

Uso index=False.

df.to_csv('your.csv', index=False)
Probablemente rgbkrk
fuente
Solución vergonzosamente fácil, me da vergüenza llegar a esto 6 años después.
peluzza
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)

blitu12345
fuente
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)
amalik2205
fuente
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')
Lucas P.
fuente
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')
Khaled Salah
fuente
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á.

Iván Rodríguez
fuente