繁体   English   中英

使用Python熊猫读取制表符分隔的文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM