【发布时间】:2018-03-20 13:18:03
【问题描述】:
我有一个 .csv 文件,其中包含多列长度的行。
import pandas as pd
df = pd.read_csv(infile, header=None)
返回
ParserError: Error tokenizing data. C error: Expected 6 fields in line 8, saw 8
错误。我知道我可以使用
names=my_cols
read_csv 调用中的选项,但肯定有比这更“pythonic”的东西吗?另外,这不是一个重复的问题,因为
error_bad_lines=False
导致行被跳过(这是不希望的)。 .csv 看起来像::
Anne,Beth,Caroline,Ernie,Frank,Hannah
Beth,Caroline,David,Ernie
Caroline,Hannah
David,,Anne,Beth,Caroline,Ernie
Ernie,Anne,Beth,Frank,George
Frank,Anne,Caroline,Hannah
George,
Hannah,Anne,Beth,Caroline,David,Ernie,Frank,George
【问题讨论】:
-
如果没有实际看到您的 csv 的实际样子就无法回答,错误可能是因为您的列名和实际列不匹配,您嵌入了逗号,您的分隔符不是逗号等等。
-
您希望您的
df是什么样的? -
这不是上述问题的重复,因为“error_bad_lines=False”会导致行被跳过。我不想要那种行为。
-
那么你在这里期待什么?您想要
NaN缺少值吗?您想保留所有行吗?例如,您似乎没有一致的条目数,您必须解析 csv 以确定最大列数,然后在没有标题的情况下读取它 -
为什么要这样?为什么库必须首先解析整个 csv,然后在第二遍构造 df 知道最大列数?这似乎是一个不合理的假设,而且还不够普遍,不需要