我有一个17gb制表符分隔文件,使用python / pandas时出现上述错误
我正在做以下事情:
data = pd.read_csv('/tmp/testdata.tsv',sep='\t')
我还尝试过添加encoding =' utf8'并尝试了read_table和各种标志,包括low_memory = True,但我总是在同一行得到同样的错误。
我在文件上运行了以下内容:
awk -F"\t" 'FNR==1025974 {print NF}' /tmp/testdata.tsv
它返回281表示字段数,因此awk告诉我该行有正确的281列,但是read_csv告诉我我有331列。
我也在1025973和1025975号线上尝试了上面的awk,只是为了确定某些东西不是零而且它们都回来了281个字段。
我在这里缺少什么?
答案 0 :(得分:1)
所以为了调试这个,我拿了我的标题行,然后从上面取了一行并通过read_csv运行它。然后我又得到了一个错误:
标记数据时出错。 C错误:从第1行开始的字符串中的EOF
问题结果是,默认情况下,如果在分隔符后面立即看到双引号,read_csv将查找结束双引号。
我错误地认为如果我指定了sep =" \ t"它只会在标签上分开而不关心任何其他角色。
长话短说,要解决此问题,请将以下标志添加到read_csv
quoting = 3,即QUOTE_NONE。