705 Stimmen

Python Pandas Fehler beim Tokenisieren von Daten

Ich versuche, pandas zu verwenden, um eine .csv-Datei zu manipulieren, aber ich erhalte diesen Fehler:

pandas.parser.CParserError: Fehler beim Tokenisieren der Daten. C Fehler: Erwartet 2 Felder in Zeile 3, aber 12 gesehen

Ich habe versucht, die pandas-Dokumentation zu lesen, aber nichts gefunden.

Mein Code ist einfach:

path = 'GOOG Key Ratios.csv'
#print(open(path).read())
data = pd.read_csv(path)

Wie kann ich das lösen? Sollte ich das csv-Modul oder eine andere Sprache verwenden?

Die Datei stammt von Morningstar

0voto

In meinem Fall war das Problem eine Pandas-Version, also funktioniert Pandas 1.3.5 wie ein Zauber.

0voto

banderlog013 Punkte 1725

Stellen Sie sich vor, wir haben eine schäbige CSV-Datei und möchten keine Fehlerzeilen löschen, weil wir davon viele haben. In diesem Fall können wir unnötige Spalten löschen, die einen Fehler verursachen, und die CSV-Datei danach laden:

# in diesem Fall haben einige Zeilen in crappy.csv mehr als 3 Spalten
# und wir möchten nur 3 davon
cat crappy.csv | cut -d',' --fields=1,2,3 > good.csv

0voto

Verwenden Sie zuerst dos2unix, um die Datei zu bereinigen. Optional können Sie dann die Spaltennamen hinzufügen.

0voto

fact_finder Punkte 152

Ich bin auf diesen Fehler mit einem verirrten Anführungszeichen gestoßen. Ich benutze eine Mapping-Software, die Anführungszeichen um Textelemente setzt, wenn sie kommagetrennte Dateien exportiert. Texte, die Anführungszeichen verwenden (z.B. ' = Fuß und " = Zoll), können problematisch sein. Betrachten Sie dieses Beispiel, das feststellt, dass ein 5-Zoll-Bohrlochdruck schlecht ist:

UWI_key,Latitude,Longitude,Remark US42051316890000,30.4386484,-96.4330734,"schlecht 5""

Die Verwendung von 5" als Abkürzung für 5 inch wirft einen Schraubenschlüssel ins Getriebe. Excel wird einfach das zusätzliche Anführungszeichen entfernen, aber Pandas funktioniert ohne das oben genannte error_bad_lines=False Argument nicht.

Sobald Sie die Art Ihres Fehlers kennen, ist es möglicherweise am einfachsten, einen Suchen-Ersetzen-Befehl von einem Texteditor (z.B. Sublime Text 3 oder Notepad++) vor dem Import durchzuführen.

0voto

SQA_LEARN Punkte 161

Das Problem könnte mit den Dateiproblemen zusammenhängen. In meinem Fall wurde das Problem behoben, nachdem die Datei umbenannt wurde. Der Grund ist noch unklar...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X