标记数据时出错。 C错误:第9行中预计有2个字段,看到16但该行中没有额外数据

时间:2017-10-31 18:42:43

标签: python pandas csv

我环顾四周,但处理这个错误的其他答案都没有帮助。我试图加载一个csv文件,它在前几行中有一些垃圾,数据从第4行开始。使用:

data = pd.DataFrame.from_csv('GRs151_1.CSV', header = 4)

我明白了:

CParserError: Error tokenizing data. C error: Expected 1 fields in line 9, saw 16

奇怪的是,据我所知,违规行没有多余的数据或任何东西。作为测试我做了:

with open('GRs151_1.CSV', 'r') as f:
i = 0
for line in f:
    if i < 20:
        print(i)
        try:
            a = eval(line)
            print(a)
        except:
            print('error happened')
        i += 1

输出所有行的预期结果,包括第9行:

0
error happened
1
error happened
2
error happened
3
error happened
4
error happened
5
(0, 0)
6
(1, 0)
7
(2, 0)
8
(3, 0)
9
(4, 0)
10
(5, 0)
11
(6, 0)
12
(7, 0)
13
(8, 0)
14
(9, 0)
15
(10, 0)
16
(11, 0)
17
(12, 0)
18
(13, 1)
19
(14, 0)

当我尝试:

data = pd.read_csv('GRs151_1.CSV',header = 4, usecols = (0, 1))

错误现在是:

CParserError: Error tokenizing data. C error: Buffer overflow caught - possible malformed input file.

除了编写一个手动加载文件并放弃from_csv和read_csv之外,还不确定从何处开始。

1 个答案:

答案 0 :(得分:0)

如果没有看到文件的内容,很难回答你的问题。但是,您可以尝试通过使用像Notepad ++这样的加强文本编辑器来查看.csv文件来修复您的问题,以查看是否有任何隐藏的空白字符,或其他可能为您搞砸的粗糙字符。如果您是hacky修复程序的粉丝,您可以使用编辑器删除有问题的字符,然后保存。也可以摆脱那些讨厌的前四行。 :)