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

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

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

我的代码很简单:

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

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

文件来自晨星公司


当前回答

您的CSV文件可能有可变的列数,read_csv从前几行推断出列数。在这种情况下有两种解决方法:

1)将CSV文件更改为具有最大列数的虚拟第一行(并指定header=[0])

2)或者使用names = list(range(0,N)),其中N是最大列数。

其他回答

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

用data = pd试试。read_csv(路径,skiprows = 2)

在参数中使用分隔符

pd.read_csv(filename, delimiter=",", encoding='utf-8')

它会读。

使用 熊猫。read_csv (CSVFILENAME,头= None, 9 = " ")

当试图从链接中读取CSV数据时

http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data

我将该网站的数据复制到我的csv文件中。它有额外的空格,所以使用sep =', '并且它工作:)

试题:熊猫。read_csv(path, sep = ',',header=None)

这看起来很丑,但你会有你的数据框架

import re
path = 'GOOG Key Ratios.csv'

try:
    data = pd.read_csv(path)
except Exception as e:
    val = re.findall('tokenizing.{1,100}\s*Expected\s*(\d{1,2})\s*',str(e),re.I)
    data = pd.read_csv(path, skiprows=int(val[0])-1)