2017-01-24 1 views
0

Ich begann für einige Tage mit Pandas in Python 3.4 zu arbeiten. Ich entschied mich, an Book-Crossing data set zu arbeiten.
Das Buch Informationstabelle ist wie folgt:

Books information

Das Buch Rating-Tabelle ist wie folgt:

enter image description here

Ich möchte die „ISBN“, „Buchtitel“ aus dem Buch Informationen packen Tabelle und fusionieren Sie es mit der Buch-Bewertungstabelle, in der beide die "ISBN" zusammenbringen und danach die Ergebnisse in eine andere csv-Datei schreiben. habe ich den Code unten:Wie kann ich die csv-Datei in Pandas lesen, die mit ";" getrennt ist?

udata = pd.read_csv('1', names = ('User_ID', 'ISBN', 'Book-Rating'), encoding="ISO-8859-1", sep=';', usecols=[0,1,2]) 
uitem = pd.read_csv('2', names = ('ISBN', 'Book-Title'), encoding="ISO-8859-1", sep=';', usecols=[0,1]) 
ratings = pd.merge(udata, uitem, on='ISBN') 
ratings.to_csv('ratings.csv', index=False) 

Leider funktioniert es nicht und es gibt einen Fehler:

Traceback (most recent call last): 
File "C:\Users\masoud\Desktop\Dataset\data2\a.py", line 2, in <module> 
udata = pd.read_csv('2.csv', names = ('User_ID', 'ISBN', 'Book-Rating'),encoding="ISO-8859-1", sep=';', usecols=[0,1,2]) 
File "C:\WinPython-64bit-3.4.3.6\python-3.4.3.amd64\lib\site-packages\pandas\io\parsers.py", line 491, in parser_f 
return _read(filepath_or_buffer, kwds) 
File "C:\WinPython-64bit-3.4.3.6\python-3.4.3.amd64\lib\site-packages\pandas\io\parsers.py", line 278, in _read 
return parser.read() 
File "C:\WinPython-64bit-3.4.3.6\python-3.4.3.amd64\lib\site-packages\pandas\io\parsers.py", line 740, in read 
ret = self._engine.read(nrows) 
File "C:\WinPython-64bit-3.4.3.6\python-3.4.3.amd64\lib\site-packages\pandas\io\parsers.py", line 1187, in read 
data = self._reader.read(nrows) 
File "pandas\parser.pyx", line 758, in pandas.parser.TextReader.read (pandas\parser.c:7919) 
File "pandas\parser.pyx", line 780, in pandas.parser.TextReader._read_low_memory (pandas\parser.c:8175) 
File "pandas\parser.pyx", line 833, in pandas.parser.TextReader._read_rows (pandas\parser.c:8868) 
File "pandas\parser.pyx", line 820, in pandas.parser.TextReader._tokenize_rows (pandas\parser.c:8736) 
File "pandas\parser.pyx", line 1732, in pandas.parser.raise_parser_error (pandas\parser.c:22105) 
pandas.parser.CParserError: Error tokenizing data. C error: Expected 8 fields in line 6452, saw 9 

Ich habe mich gefragt, ob jemand den Fehler beheben kann?

+0

OK. Ich habe getan wie du gefragt hast. –

+0

Es besagt, dass in der Zeilennummer 6452 eine zusätzliche Präsenz von sep char '"; "vorhanden ist, die versucht wurde, sie auf mehrere Spalten aufzuteilen, die nicht verfügbar waren. Versuchen Sie vielleicht 'error_bad_lines = False', aber dies würde die fehlerhaften Zeilen überspringen, während die Zeilennummern ausgegeben werden. Eine andere Option wäre, die korrekten und inkorrekten Parsings zu verarbeiten, indem sie separat gelesen werden, nachdem die falschen identifiziert wurden. –

Antwort

0

Ändern Sie in der ersten und zweiten Zeile sep in ;.

sep=';' 
+0

Ich habe die Frage bearbeitet und die sep = ',' in sep = ';' geändert. –

Verwandte Themen