使用Python Pandas

时间:2017-06-22 12:12:23

标签: python python-2.7 pandas

我在使用Pandas读取制表符分隔文件时遇到了问题。

所有单元格值都有双引号,但对于某些行,有一个额外的双引号会破坏整个过程。例如:

Column A  Column B  Column C
"foo1"    "121654"  "unit"
"foo2"    "1214"    "unit"
"foo3"    "15884""  

我得到的错误是:错误标记数据。 C错误:预计行8355中的31个字段,见58

我使用的代码是:

csv = pd.read_csv(file, sep='\t',  lineterminator='\n', names=None) 

并且它适用于其余文件,但不适用于出现此额外双引号的文件。

2 个答案:

答案 0 :(得分:1)

您可以执行预处理步骤来修复报价问题:

with open(file, 'r') as fp:
    text = fp.read().replace('""', '"')

with open(file, 'w') as fp:
    fp.write(text)

答案 1 :(得分:1)

如果您无法更改错误输入,最好的方法是将输入文件读入io.StringIO对象,替换双引号,然后将此类文件对象传递给pd.read(它支持文件名和类文件对象)

这样您就不必创建临时文件或更改输入数据。

import io

with open(file) as f:
    fileobject = io.StringIO(f.read().replace('""','"'))

csv = pd.read_csv(fileobject, sep='\t',  lineterminator='\n', names=None)