2015-10-16 13 views
5

Я пытаюсь выполнить вызов kaggle here, и, к сожалению, я застрял на очень базовом шаге. Для этого нужно обвинить в моем ограниченном знании питона. Я пытаюсь читать datasets в панд dataframe, выполнив следующую команду:Не читает все строки при импорте csv в pandas dataframe

test = pd.DataFrame.from_csv("C:/Name/DataMining/hillary/data/output/emails.csv") 

Проблема заключается в том, что этот файл, как вы бы узнать, имеет более чем 300 000 записей, но я читаю только 7945, 21.

print (test.shape) 
(7945, 21) 

Теперь я дважды проверил файл, и я не могу найти ничего особенного в строке номера 7945. Любые указания, почему это может происходить. Кажется, очень обычная ситуация, я надеюсь, что некоторые из вас, которые столкнулись с этой ошибкой, могут помочь мне.

+1

спасибо за этот вопрос. Я столкнулся с подобной проблемой. – Saurabh

ответ

2

Я думаю, что лучше использовать функцию read_csv с параметрами quoting=csv.QUOTE_NONE и error_bad_lines=False. link

import pandas as pd 
import csv 

test = pd.read_csv("output/Emails.csv", quoting=csv.QUOTE_NONE, error_bad_lines=False) 

print (test.shape) 
#(381422, 22) 

Но некоторые данные (проблемные) будут пропущены.

Если вы хотите пропустить данные электронной почты тела, вы можете использовать:

import pandas as pd 
import csv 

test = pd.read_csv("output/Emails.csv", quoting=csv.QUOTE_NONE, sep=',', error_bad_lines=False, header=None, 
    names=["Id","DocNumber","MetadataSubject","MetadataTo","MetadataFrom","SenderPersonId","MetadataDateSent","MetadataDateReleased","MetadataPdfLink","MetadataCaseNumber","MetadataDocumentClass","ExtractedSubject","ExtractedTo","ExtractedFrom","ExtractedCc","ExtractedDateSent","ExtractedCaseNumber","ExtractedDocNumber","ExtractedDateReleased","ExtractedReleaseInPartOrFull","ExtractedBodyText","RawText"]) 

print (test.shape) 

#delete row with NaN in column MetadataFrom 
test = test.dropna(subset=['MetadataFrom']) 
#delete headers in data 
test = test[test.MetadataFrom != 'MetadataFrom']