导入CSV文件到pandas数据框时未读取所有行

8

我正在尝试参加kaggle挑战(点击此处),但很遗憾我在一个非常基础的步骤上卡住了。

我试图通过执行以下命令将数据集读入pandas dataframe:

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

问题在于,正如您所发现的那样,这个文件有超过300,000条记录,但我只读取了7945条。

print (test.shape)
(7945, 21)

我已经仔细检查了文件,但是在第7945行找不到任何特殊之处。请问有什么指示原因的线索吗?

1个回答

17

我认为更好的方法是使用带有参数quoting=csv.QUOTE_NONEerror_bad_lines=False的函数read_csv链接

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']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接