Python 熊猫读取CSV缺少的行
我有一个包含16M+行的大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,
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
方法读取该文件,并检查该方法是否适用于您。