2016-10-03 79 views
2

我有一個包含51,347行的數據集。當使用熊貓導入數據並將分隔符設置爲「|」 ,我輸了394排。使用分隔符導入時,大熊貓缺少行=「|」

import pandas as pd 
df = pd.read_csv("Basin11.txt", sep='|', error_bad_lines=False, 
dtype={'Start Date': str, 'Greater Than/Less Than': str, 
'Parameter Code': float, 'Start Time': str, 'Start Depth': float, 'Composite Category': str, 
'Composite Type': str}) 
print(len(df.index)) 

如果刪除在SEP變量,數據將不加載爲多個列,但將加載的行的適當數量。它似乎只是這個文件的一個問題。 Basin11.txt File

有誰知道我爲什麼會丟失數據?

+0

我會想象大約394行有「自由」的文字列正在翻譯|翻譯|翻譯,而error_bad_lines = False默默地忽略那些行 – Boud

+0

我試過刪除error_bad_lines = False,但它對長度沒有影響。除了sep ='|'之外,我們單獨刪除了每個參數,但沒有任何效果。 – Will

回答

2

我開始瀏覽您的輸入文件,發現一些可能導致「缺失行」的錯誤。

評論行3491和9805有一個開頭"但缺少結束"。這會導致匹配問題,包括以下行作爲評論主體的一部分。當我開始修復這些問題時,線數開始增加。這可能有更多的情況。

此外,有些行還有用於打開和關閉註釋的雙引號("")。例如:

「」 綠色,中值潮,10-15英里的風 「」

編輯:我添加以下代碼:

for comment in df['Comments'].values: 
    print(comment) 

然後跑python3 sample.py | grep '|' | wc -l,找到包含|,並得到394(你缺少的行數)的評論數

+0

謝謝修復!然後我需要將參數quoting = 3添加到read_csv文件中。 – Will