首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Pandas读取制表符分隔的文件-适用于Windows,但不适用于Mac

使用Pandas读取制表符分隔的文件-适用于Windows,但不适用于Mac
EN

Stack Overflow用户
提问于 2015-01-12 14:05:54
回答 2查看 291.1K关注 0票数 120

我一直在用Pandas/Python在Windows中读取制表符分隔的数据文件,没有任何问题。数据文件的前三行包含注释,然后是标题。

代码语言:javascript
复制
df = pd.read_csv(myfile,sep='\t',skiprows=(0,1,2),header=(0))

我现在正在尝试用我的Mac读取这个文件。(我第一次在Mac上使用Python。)我得到以下错误。

代码语言:javascript
复制
pandas.parser.CParserError: Error tokenizing data. C error: Expected 1
fields in line 8, saw 39

如果将read_csv的error_bad_lines参数设置为False,我将获得以下信息,该信息将一直持续到最后一行的末尾。

代码语言:javascript
复制
Skipping line 8: expected 1 fields, saw 39
Skipping line 9: expected 1 fields, saw 125
Skipping line 10: expected 1 fields, saw 125
Skipping line 11: expected 1 fields, saw 125
Skipping line 12: expected 1 fields, saw 125
Skipping line 13: expected 1 fields, saw 125
Skipping line 14: expected 1 fields, saw 125
Skipping line 15: expected 1 fields, saw 125
Skipping line 16: expected 1 fields, saw 125
Skipping line 17: expected 1 fields, saw 125
...

我需要为编码参数指定值吗?似乎我不应该这样做,因为读取文件在Windows上运行得很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-15 16:35:15

最大的线索是所有行都在一行上返回。这表示行终止符被忽略或不存在。

您可以为csv_reader指定行终止符。如果您使用的是mac,那么创建的行将以\r结尾,而不是linux标准的\n,或者更好,更好的方式是使用带有\r\n的windows的挂起和腰带方法。

代码语言:javascript
复制
pandas.read_csv(filename, sep='\t', lineterminator='\r')

您还可以使用编解码器包打开所有数据。这可以以牺牲文档加载速度为代价来增加健壮性。

代码语言:javascript
复制
import codecs

doc = codecs.open('document','rU','UTF-16') #open for reading with "universal" type set

df = pandas.read_csv(doc, sep='\t')
票数 188
EN

Stack Overflow用户

发布于 2019-05-09 14:57:02

另一种选择是在命令pandas.read_csv(filename, sep='\t', engine='python')中添加engine='python'

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27896214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档