2016-04-29 87 views
1

我正在使用csv.reader和pandas導入一個csv文件。但是,來自同一文件的行數是不同的。csv.reader和pandas的區別 - python

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

結果是10,000(這是正確的值)。然而,熊貓回報不同的價值。

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

這將返回9,985

有誰知道爲什麼會出現導入數據的兩種方法之間的區別?

我只是嘗試這樣做:

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

這將返回10,000。

+0

我無法重現此問題。當我在'csv'文件上運行這段代碼時,差異只有一行,那就是'header' –

+0

你能給我們一個小樣本輸入文件來證明這個問題嗎?這應該是可能的,如果你第一次找出*哪些*行丟失。 –

+0

這應該是。我從來沒有見過這個問題。 – kevin

回答

2

參考pandas.read_csv有一個名爲skip_blank_lines參數和它的默認值是True因此,除非你將它設置爲False它不會讀空行。

請看下面的例子中,有兩個空行:

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 

與skip_blank_lines =假讀吧:

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

與skip_blank_lines讀吧= TRUE:

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

感謝您的信息! – kevin