[英]Reading a tab separated file with Python 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)
对于其余文件,效果很好,但对于出现此多余双引号的文件,效果不佳。
您可以执行预处理步骤来解决报价问题:
with open(file, 'r') as fp:
text = fp.read().replace('""', '"')
with open(file, 'w') as fp:
fp.write(text)
如果您不能更改错误的输入,最好的方法是将输入文件读入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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.