用熊猫阅读标签分隔的文件——在 Windows 上可以,但在 Mac 上不行

我在 Windows 中使用 Panda/Python 阅读了一个标签分隔的数据文件,没有遇到任何问题。数据文件包含前三行中的注释,然后是标题。

df = pd.read_csv(myfile,sep='\t',skiprows=(0,1,2),header=(0))

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

pandas.parser.CParserError: Error tokenizing data. C error: Expected 1
fields in line 8, saw 39

如果将 Read _ csvError _ bad _ lines参数设置为 假的,我将获得以下信息,这将一直持续到最后一行的末尾。

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 上读取文件效果很好。

368851 次浏览

最大的线索是所有行都在一行中返回。这表明行结束符被忽略或不存在。

您可以为 csv _ reader 指定行结束符。如果你在一台 Mac 电脑上创建的线路将以 \r而不是 linux 标准的 \n结束,或者更好的是使用 \r\n窗口的吊带和皮带方式。

pandas.read_csv(filename, sep='\t', lineterminator='\r')

您还可以使用 codecs 包打开所有数据。这可能会以牺牲文档加载速度为代价来提高健壮性。

import codecs


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


df = pandas.read_csv(doc, sep='\t')

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