Sto cercando di usare pandas per manipolare un file .csv ma ottengo questo errore:
pandas.parser.CParserError: Errore nella tokenizzazione dei dati. Errore C: Attesi 2 campi nella linea 3, visto 12
Ho provato a leggere i documenti di pandas, ma non ho trovato nulla.
Il mio codice è semplice:
path = 'GOOG Key Ratios.csv'
#print(open(path).read())
data = pd.read_csv(path)
Come posso risolvere questo problema? Devo usare il modulo csv
o un altro linguaggio ?
Il file è di Morningstar
Il parser è confuso dall'intestazione del file. Legge la prima riga e deduce il numero di colonne da quella riga. Ma le prime due righe non sono rappresentative dei dati reali del file.
Prova con data = pd.read_csv(path, skiprows=2)
Mi sono imbattuto nello stesso problema. Usando pd.read_table()
sullo stesso file sorgente sembrava funzionare. Non ho potuto rintracciare la ragione di questo, ma è stato un utile workaround per il mio caso. Forse qualcuno più esperto può fare più luce sul perché ha funzionato.
Modifica: Ho scoperto che questo errore si insinua quando hai del testo nel tuo file che non ha lo stesso formato dei dati reali. Di solito si tratta di informazioni di intestazione o piè di pagina (più di una riga, quindi skip_header non funziona) che non saranno separate dallo stesso numero di virgole dei dati reali (quando si usa read_csv). Usando read_table si usa una tabulazione come delimitatore che potrebbe aggirare l'errore attuale degli utenti ma introdurne altri.
Di solito aggiro questo problema leggendo i dati extra in un file e poi uso il metodo read_csv().
La soluzione esatta potrebbe essere diversa a seconda del vostro file attuale, ma questo approccio ha funzionato per me in diversi casi