我试图使用pandas来操作一个.csv文件,但是我得到了这个错误:
pandas.parser.CParserError:标记数据时出错。C错误:应为第3行中的%2个字段,请参见% 12
我试着读了熊猫的文档,但什么也没找到。
我的代码很简单:
path = 'GOOG Key Ratios.csv'
#print(open(path).read())
data = pd.read_csv(path)
我该如何解决这个问题?我应该使用csv
模块还是其他语言?
文件来自Morningstar
发布于 2013-08-08 22:47:15
你也可以尝试一下;
data = pd.read_csv('file1.csv', error_bad_lines=False)
请注意,这将导致有问题的行被跳过。
发布于 2014-10-28 10:18:24
这可能是一个问题
正如@TomAugspurger注意到的一样,在第一行中显示数据中的分隔符
要解决此问题,请尝试在调用read_csv
时指定sep
和/或header
参数。例如,
df = pandas.read_csv(filepath, sep='delimiter', header=None)
在上面的代码中,sep
定义了分隔符,header=None
告诉pandas源数据没有标题/列标题行。the docs如是说:“如果文件不包含标题行,那么您应该显式地传递header=None”。在这种情况下,pandas会自动为每个字段{0,1,2,...}创建整数索引。
根据文档,分隔符的事情应该不是问题。文档说“如果sep是None而没有指定,将尝试自动确定这一点。”然而,我在这方面并不走运,包括带有明显分隔符的实例。
另一种解决方案可能是尝试自动检测分隔符
# 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)
发布于 2013-08-04 10:24:35
解析器被文件头搞糊涂了。它读取第一行,并从该行推断列数。但是前两行并不代表文件中的实际数据。
用data = pd.read_csv(path, skiprows=2)
试试吧
https://stackoverflow.com/questions/18039057
复制相似问题