繁体   English   中英

Python read_csv-ParserError:标记数据时出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM