[英]Python read_csv - ParserError: Error tokenizing data
我了解为什么在尝试df = pd.read_csv(file)
时出现此错误:
ParserError: Error tokenizing data. C error: Expected 14 fields in line 7, saw 30
当它在csv中读取时,它在第一行中看到14个字符串/列,基于csv的第一行将其称为标头(这是我想要的)。
但是,这些列在行下进一步扩展(特别是到达第7行时)。
我可以通过跳过第1-6行来找到可以读入的解决方案,但我不希望这样。 我仍然希望读取整个csv,但不是标题为14列,而是如何将标题设为30列,并且如果没有文本/字符串,则将该列保留为“”或null或一些随机编号。 换句话说,我不在乎它的名字,我只需要空格即可使它可以在第6行之后解析。
我想知道是否有一种方法可以读取csv,并明确表示有30列,但尚未找到解决方案。
我可以提出一些我认为应该起作用的随机解决方案。
1)设置Header = None并在read_csv的“名称”属性中指定列名称。
df=pd.read_csv(file, header=None, namees = [field1, field2, ...., field 30])
PS。 如果您的CSV尚无标题,则此方法有效。
2)其次,您可以尝试使用以下命令(如果您的csv已包含标题行)
df=pd.read_csv(file, usecols=[0,1,2,...,30])
让我知道这是否适合您。
谢谢,
罗汉·霍达卡(Rohan Hodarkar)
关于尝试的问题,请注意error_bad_lines=False
将导致跳过有问题的行
data = pd.read_csv('File_path', error_bad_lines=False)
只有几个集体答案。
第一行中的数据中的分隔符可能是一个问题,要解决此问题,请在调用read_csv时尝试指定sep和/或header参数。 例如,
df = pandas.read_csv('File_path', sep='delimiter', header=None)
在上面的代码中,sep定义了定界符,header = None告诉熊猫您的源数据没有标题/列标题行。 因此说:“如果文件不包含标题行,那么您应该显式传递header = None”。 在这种情况下,pandas自动为每个字段{0,1,2,...}创建整数索引。
根据文档,定界符问题不应该成为问题。 文档说:“如果sep为None [未指定],将尝试自动确定这一点。” 但是,我还没有遇到好运,包括带有明显分隔符的实例。
这可能是分隔符的问题,因为大多数csv CSV是使用sep ='/ t'创建的,因此请尝试使用制表符(\\ t)和分隔符/ t来读取read_csv。 因此,尝试使用以下代码行打开。
data=pd.read_csv("File_path", sep='\t')
要么
pandas.read_csv('File_path',header=None,sep=', ')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.