Come evitare che Python / Panda crei un indice in un csv salvato?


407

Sto cercando di salvare un CSV in una cartella dopo aver apportato alcune modifiche al file.

Ogni volta che uso pd.to_csv('C:/Path of file.csv')il file CSV ha una colonna separata di indici. Voglio evitare di stampare l'indice su CSV.

Provai:

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

E per salvare il file ...

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

Tuttavia, ho ancora ottenuto la colonna dell'indice indesiderata. Come posso evitarlo quando salvo i miei file?


59
prova index=Falseinvece diindex_col
Jeff

Possiamo usarlo anche in ms Excel?
Nabih Ibrahim Bawazir,

Sì, puoipd.to_excel(r'file.xlsx', index = False)
bfree67

index_colfunziona anche per read_html().
Caram

Risposte:



89

Esistono due modi per gestire la situazione in cui non vogliamo che l'indice sia archiviato nel file CSV.

  1. Come altri hanno già detto, puoi usare index = False mentre salvi il tuo
    frame di dati nel file CSV.

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

  2. Oppure puoi salvare il tuo frame di dati così com'è con un indice e durante la lettura ti basta rilasciare la colonna senza nome 0 che contiene il tuo indice precedente.

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


1
"e durante la lettura è sufficiente rilasciare la colonna senza nome 0 che contiene il tuo indice precedente" un modo migliore per farlo è specificare pd.read_csv(..., index_col=[0]ed evitare la chiamata aggiuntiva "drop".
cs95,

30

Se non si desidera alcun indice, leggere il file utilizzando:

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

salvalo usando

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

2
Non posso credere che nessuno abbia notato l'errore. Per salvare in CSV, sarebbedf.to_csv('file.csv', index=False)
MEdwin il

1
Lol nessuno sta prestando attenzione. Grazie.
amalik2205,

22

Come altri hanno già detto, se non si desidera salvare la colonna dell'indice in primo luogo, è possibile utilizzare df.to_csv('processed.csv', index=False)

Tuttavia, poiché i dati che userete di solito, hanno una sorta di indice stesso, diciamo una colonna 'data / ora', manterrei l'indice e caricherò i dati usando esso.

Quindi, per salvare i dati indicizzati, prima imposta il loro indice e poi salva il DataFrame:

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

Successivamente, puoi leggere i dati con l'indice:

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

o leggi i dati, quindi imposta l'indice:

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

Se ho impostato index_col e poi salvato, avevo ancora una colonna numerica senza nome nel CSV. (Python2)
smiller

14

Un'altra soluzione se si desidera mantenere questa colonna come indice.

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

1
Esattamente quello che stavo cercando, grazie. Che in qualche modo aiuta a tradurre in modo trasparente il concetto di chiave primaria, anche quando si usa csv
Tobbey

7

Se vuoi un buon formato, la prossima affermazione è la migliore:

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

In questo caso hai un file CSV con ',' come separato tra le colonne e il formato utf-8. Inoltre, l'indice numerico non verrà visualizzato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.