我正在尝试使用 pandas 来操作 .csv 文件,但是出现此错误:pandas.parser.CParserError: Error tokenizing data. C error: Expected 2 fields in line 3, saw 12我试图读取...
我正在尝试使用 pandas 来操作 .csv 文件,但是出现此错误:
pandas.parser.CParserError:标记数据时出错。C 错误:第 3 行应有 2 个字段,实际为 12 个
我曾尝试阅读 pandas 文档,但一无所获。
我的代码很简单:
path = 'GOOG Key Ratios.csv'
#print(open(path).read())
data = pd.read_csv(path)
我该如何解决这个问题?我应该使用 csv
模块还是其他语言?
这可能是一个问题
要解决此问题,请尝试在调用时指定 sep
and/or header
参数 read_csv
。例如,
df = pandas.read_csv(filepath, sep='delimiter', header=None)
在上面的代码中, sep
定义分隔符并 header=None
告诉 pandas 您的源数据没有标题行/列标题。因此 文档中 :“如果文件不包含标题行,则应明确传递 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)