首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python Pandas标记化数据时出错

Python Pandas标记化数据时出错
EN

Stack Overflow用户
提问于 2013-08-04 09:54:45
回答 43查看 1.1M关注 0票数 510

我试图使用pandas来操作一个.csv文件,但是我得到了这个错误:

pandas.parser.CParserError:标记数据时出错。C错误:应为第3行中的%2个字段,请参见% 12

我试着读了熊猫的文档,但什么也没找到。

我的代码很简单:

代码语言:javascript
复制
path = 'GOOG Key Ratios.csv'
#print(open(path).read())
data = pd.read_csv(path)

我该如何解决这个问题?我应该使用csv模块还是其他语言?

文件来自Morningstar

EN

回答 43

Stack Overflow用户

回答已采纳

发布于 2013-08-08 22:47:15

你也可以尝试一下;

代码语言:javascript
复制
data = pd.read_csv('file1.csv', error_bad_lines=False)

请注意,这将导致有问题的行被跳过。

票数 772
EN

Stack Overflow用户

发布于 2014-10-28 10:18:24

这可能是一个问题

正如@TomAugspurger注意到的一样,在第一行中显示数据中的分隔符

要解决此问题,请尝试在调用read_csv时指定sep和/或header参数。例如,

代码语言:javascript
复制
df = pandas.read_csv(filepath, sep='delimiter', header=None)

在上面的代码中,sep定义了分隔符,header=None告诉pandas源数据没有标题/列标题行。the docs如是说:“如果文件不包含标题行,那么您应该显式地传递header=None”。在这种情况下,pandas会自动为每个字段{0,1,2,...}创建整数索引。

根据文档,分隔符的事情应该不是问题。文档说“如果sep是None而没有指定,将尝试自动确定这一点。”然而,我在这方面并不走运,包括带有明显分隔符的实例。

另一种解决方案可能是尝试自动检测分隔符

代码语言:javascript
复制
# use the first 2 lines of the file to detect separator
temp_lines = csv_file.readline() + '\n' + csv_file.readline()
dialect = csv.Sniffer().sniff(temp_lines, delimiters=';,')

# remember to go back to the start of the file for the next time it's read
csv_file.seek(0) 

df = pd.read_csv(csv_file, sep=dialect.delimiter)
票数 155
EN

Stack Overflow用户

发布于 2013-08-04 10:24:35

解析器被文件头搞糊涂了。它读取第一行,并从该行推断列数。但是前两行并不代表文件中的实际数据。

data = pd.read_csv(path, skiprows=2)试试吧

票数 55
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18039057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档