我试图使用熊猫操作.csv文件,但我得到这个错误:

pandas.parser.CParserError:标记数据错误。C错误:第3行有2个字段,见12

我试着读过熊猫的文件,但一无所获。

我的代码很简单:

path = 'GOOG Key Ratios.csv'
#print(open(path).read())
data = pd.read_csv(path)

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

文件来自晨星公司


当前回答

问题出在分隔符上。找出在数据中使用的分隔符类型,并如下所示指定它:

data = pd.read_csv('some_data.csv', sep='\t')

其他回答

大多数有用的答案已经提到了,但是我建议将pandas数据框架保存为parquet文件。Parquet文件没有这个问题,同时它们是内存高效的。

我从同事那里收到了.csv文件,当我试图使用pd.read_csv()读取csv文件时,我收到了类似的错误。显然,它试图使用第一行来为数据框架生成列,但许多行包含的列比第一行所暗示的要多。我最终通过简单地打开文件并重新保存为.csv并再次使用pd.read_csv()来解决这个问题。

这肯定是分隔符的问题,因为大多数csv csv都是使用sep='/t'创建的,所以尝试使用分隔符/t的制表符(\t)来读取csv。所以,尝试使用下面的代码行打开。

data=pd.read_csv("File_path", sep='\t')

有时候问题不在于如何使用python,而在于如何处理原始数据。 我得到了这个错误信息

Error tokenizing data. C error: Expected 18 fields in line 72, saw 19.

结果发现,在列描述中有时会有逗号。这意味着需要清理CSV文件或使用另一个分隔符。

你也可以试试;

data = pd.read_csv('file1.csv', on_bad_lines='skip')

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

Edit

对于熊猫< 1.3.0尝试

data = pd.read_csv("file1.csv", error_bad_lines=False)

根据熊猫API参考。