Python 熊猫读取CSV缺少的行

Python 熊猫读取CSV缺少的行,python,pandas,csv,Python,Pandas,Csv,我有一个包含16M+行的大CSV文件,如下所示: with open(r'file.csv') as fp: count = 0 for _ in fp: count += 1 print(count) 16817381 但是,当我使用pandas.read_csv阅读它时,我只看到超过15行 df = pd.read_csv(r'file.csv', low_memory = False, usecols = [0, 13, 4, 5, 6, 7,

我有一个包含16M+行的大CSV文件,如下所示:

with open(r'file.csv') as fp:
    count = 0
    for _ in fp:
        count += 1
    print(count)

16817381
但是,当我使用pandas.read_csv阅读它时,我只看到超过15行

df = pd.read_csv(r'file.csv', low_memory = False, usecols = [0, 13, 4, 5, 6, 7, 8, 11])
df.shape[0]

15234809
文件格式质量不好。它总共有27列,但有些行在其他列中有值。我怀疑这是导致错误的原因

例如,如果我没有在
usecols
中指定任何内容,我会看到以下错误:

Error tokenizing data. C error: Expected 27 fields in line 189, saw 28
我检查了类似的问题,并尝试添加参数,如
error\u bad\u lines=False
,但没有任何效果


有人能给我建议吗?谢谢

试试这样的方法:

import pandas as pd
import csv

def ReadRows(stream, max_length=None):
    #get data in rows from stream
    rows = csv.reader(stream)
    #set max length
    if max_length is None:
        rows = list(rows)
        max_length = max(len(row) for row in rows)
    for row in rows:
        yield row + [None] * (max_length - len(row))

with open('yourFile.csv') as f:
    df = pd.DataFrame.from_records(list(ReadRows(f)))

CSV可以包括多行字段(如果字段用引号封装)。这意味着带有封装文本字段的CSV的行数将少于文件中的换行数。检查您的数据是否存在这种情况。如果格式不固定,请尝试使用
read_fwf
方法读取该文件,并检查该方法是否适用于您。