2016-04-29 9 views
1

Ich importiere eine csv-Datei mit csv.reader und pandas. Die Anzahl der Zeilen aus derselben Datei ist jedoch unterschiedlich.unterschied in csv.reader und pandas - python

reviews = [] 
openfile = open("reviews.csv", 'rb') 
r = csv.reader(openfile) 
for i in r: 
    reviews.append(i) 
openfile.close() 
print len(reviews) 

das Ergebnis ist 10.000 (was der richtige Wert ist). Pandas gibt jedoch einen anderen Wert zurück.

df = pd.read_csv("reviews.csv", header=None) 
df.info() 

diese kehrt 9985

Weiß jemand, warum Unterschied zwischen den beiden Methoden gibt es Daten zu importieren?

ich das gerade versucht:

reviews_df = pd.DataFrame(reviews) 
reviews_df.info() 

Das gibt 10.000.

+0

Ich kann dieses Problem nicht reproduzieren. Wenn ich diesen Code auf einer 'csv' Datei laufe, ist der Unterschied nur eine Zeile und das ist der' header' –

+0

Kannst du uns eine kleine Beispieldatei geben, die das Problem demonstriert? Dies sollte möglich sein, wenn Sie zuerst herausfinden, welche * Zeilen fehlen. –

+0

Das soll sein. Ich habe dieses Problem noch nie zuvor gesehen. – kevin

Antwort

2

finden Sie in der pandas.read_csv gibt es ein Argument skip_blank_lines und seinen Standardwert ist benannt True daher, wenn Sie es zu False setzen es die leeren Zeilen nicht lesen.

Betrachten Sie das folgende Beispiel gibt es zwei leere Zeilen:

A,B,C,D 
0.07,-0.71,1.42,-0.37 

0.08,0.36,0.99,0.11 
1.06,1.55,-0.93,-0.90 
-0.33,0.13,-0.11,0.89 
1.91,-0.74,0.69,0.83 
-0.28,0.14,1.28,-0.40 
0.35,1.75,-1.10,1.23 

-0.09,0.32,0.91,-0.08 

Lesen Sie es mit skip_blank_lines = False:

df = pd.read_csv('test_data.csv', skip_blank_lines=False) 
len(df) 
10 

Lesen Sie es mit skip_blank_lines = True:

df = pd.read_csv('test_data.csv', skip_blank_lines=True) 
    len(df) 
    8 
+0

Danke für die Information! – kevin

Verwandte Themen