2017-10-16 3 views
0

Je souhaite lire le tableau book-crossing dataset: BX-Books. en utilisant des pandas. Quand j'écris:CParserError: erreur lors de la segmentation des données. lors de la lecture d'un jeu de données de croisement de livres

#load book informations dataset 
books = pd.read_csv("BX-CSV-Dump/BX-Books.csv",sep=';') 

Je reçois une erreur:

CParserError: Error tokenizing data. C error: Expected 8 fields in line 6452, saw 9

Comment corriger cela? J'ai essayé avec '\ t' comme un séparateur mais cela n'a pas fonctionné aussi, j'obtiens toutes les colonnes dans une colonne séparées par ";" dans ce cas.

+2

Etes-vous allé à la ligne 6452 et voir à quoi ressemblent vos données et pourquoi cela renvoie-t-il cette erreur? –

Répondre

1

Le problème a été causé par les chaînes comme:

"Peterman Rides Again: Adventures Continue with the Real \"J. Peterman\" Through Life & the Catalog Business" 

REMARQUE: attention à &, contenant le ; et \"J. Peterman\", contenant le caractère de citation

Donc, essayez ceci:

In [34]: df = pd.read_csv(fn, sep=';', escapechar='\\', encoding='CP1252', 
          low_memory=False) 

In [35]: df.shape 
Out[35]: (271379, 8) 
+0

J'ai eu plusieurs lignes ignorées. Quelle est la raison? Je veux dire, je veux comprendre ce qui rend l'utilisation de ';' comme délimiteur échoué? Je vous remercie. – SarahData

+0

D'une certaine manière, oui..mais comment est-ce alors qu'il y a le même nombre de colonnes pour toutes les lignes .. ok, si je ne veux pas que les lignes soient ignorées, devrais-je utiliser une autre bibliothèque pour lire le fichier? qu'Est-ce que c'est? – SarahData

+0

@SarahM, je viens de découvrir la "bonne approche" ;-) – MaxU