Pandas read_csv erwartet, dass falsche Anzahl von Spalten, mit zerlumpten csv-Datei
Ich habe eine csv-Datei, die ein paar hundert Zeilen und 26 Spalten, aber die letzten Spalten nur einen Wert in ein paar Zeilen und Sie werden in Richtung der Mitte oder am Ende der Datei. Wenn ich versuche, es zu Lesen bei der Verwendung read_csv() bekomme ich die folgende Fehlermeldung.
"ValueError: Erwarte 23 Spalten, got 26, in Zeile 64"
Ich kann nicht sehen, wo Sie ausdrücklich die Anzahl der Spalten in der Datei, oder, wie es bestimmt, wie viele Spalten es denkt, die Datei haben sollte.
Die Deponie ist unter
In [3]:
infile =open(easygui.fileopenbox(),"r")
pledge = read_csv(infile,parse_dates='true')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-3-b35e7a16b389> in <module>()
1 infile =open(easygui.fileopenbox(),"r")
2
----> 3 pledge = read_csv(infile,parse_dates='true')
C:\Python27\lib\site-packages\pandas-0.8.1-py2.7-win32.egg\pandas\io\parsers.pyc in read_csv(filepath_or_buffer, sep, dialect, header, index_col, names, skiprows, na_values, thousands, comment, parse_dates, keep_date_col, dayfirst, date_parser, nrows, iterator, chunksize, skip_footer, converters, verbose, delimiter, encoding, squeeze)
234 kwds['delimiter'] = sep
235
--> 236 return _read(TextParser, filepath_or_buffer, kwds)
237
238 @Appender(_read_table_doc)
C:\Python27\lib\site-packages\pandas-0.8.1-py2.7-win32.egg\pandas\io\parsers.pyc in _read(cls, filepath_or_buffer, kwds)
189 return parser
190
--> 191 return parser.get_chunk()
192
193 @Appender(_read_csv_doc)
C:\Python27\lib\site-packages\pandas-0.8.1-py2.7-win32.egg\pandas\io\parsers.pyc in get_chunk(self, rows)
779 msg = ('Expecting %d columns, got %d in row %d' %
780 (col_len, zip_len, row_num))
--> 781 raise ValueError(msg)
782
783 data = dict((k, v) for k, v in izip(self.columns, zipped_content))
ValueError: Expecting 23 columns, got 26 in row 64
Danke Roman, ich war in der Mitte, herauszufinden, wie um Sie lesbarer zu machen, mich und Sie, mich zu schlagen. 🙂
np, über Ihre Frage, Sie haben-header in der Datei?
Nein, keine header, der so aussieht, oder die Antwort unten wäre der Weg zu gehen.
np, über Ihre Frage, Sie haben-header in der Datei?
Nein, keine header, der so aussieht, oder die Antwort unten wäre der Weg zu gehen.
InformationsquelleAutor chrisfs | 2013-11-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
names
parameter. Zum Beispiel, wenn Sie die csv-Datei wie folgt:Und versuchen Sie, es zu Lesen, die Sie erhalten und Fehler
Aber wenn Sie passieren
names
Parameter, erhalten Sie das Ergebnis:Hoffe, es hilft.
InformationsquelleAutor Roman Pekar
können Sie auch laden Sie die CSV mit Trennzeichen '^', laden Sie die gesamte Zeichenfolge in eine Spalte, dann benutzen Sie die split zu brechen, die Schnur in die erforderliche Trennzeichen. Danach haben Sie eine concat-verschmelzen mit dem ursprünglichen dataframe (falls erforderlich).
InformationsquelleAutor arjepak
Angenommen, Sie haben eine Datei wie diese:
Könnten Sie
csv.reader
reinigen Sie zuerst die Dateiund erhalten:
Wenn Sie nicht über header, die Sie verwenden könnten:
dann können Sie konvertieren Wörterbuch dataframe mit
InformationsquelleAutor yemu
Das problem mit der gegebenen Lösung ist, dass Sie haben, um zu wissen, die maximale Anzahl von Spalten erforderlich. Ich konnte Sie nicht finden, eine direkte Funktion für dieses problem, aber man kann sicherlich schreiben Sie eine def kann:
Hier ist die def (Funktion) schrieb ich für meine Dateien:
InformationsquelleAutor Abhinav Yadav