【发布时间】:2015-03-09 21:04:59
【问题描述】:
我一直在使用 Pandas/Python 在 Windows 中读取制表符分隔的数据文件,没有任何问题。数据文件的前三行包含注释,然后是标题。
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_csv 的 error_bad_lines 参数设置为 False,我会得到以下信息,该信息一直持续到最后一行的末尾。
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
...
我需要为 encoding 参数指定一个值吗?似乎我不应该这样做,因为在 Windows 上读取文件可以正常工作。
【问题讨论】:
-
您是否在两个操作系统上使用完全相同版本的 pandas?您能否提供一些示例数据来说明 Mac 上的问题?
-
无关:你了解 Python 中
(0)和(0,)之间的区别吗?注意:(0)是0和(0,)是0,-- 逗号创建一个元组(空的除外),而不是括号。 -
你试过
df = pd.read_table(myfile, skiprows=[0,1,2], header=0)吗? -
大家好。感谢您的建议。我提出了一个临时解决方案,但可能需要重新审视这个问题并在未来寻找更好的解决方案。如果我这样做,我会进一步研究你的建议。我的临时解决方案是获取我拥有的 csv 文件(并且之前已使用 Excel 转换为有问题的制表符分隔文件)并将其保存为带有 Google 文档的 .tsv。我使用 Gdocs 只是因为它是当时我可用的最方便的文档应用程序。这种转换奏效了。我相信,Pandas 能够正确读取文件,然后继续执行我的其余代码。
-
我怀疑您在这里看到的 Mac 问题是行终止符。在 Mac 上制作的电子表格可以通过各种库引起各种有趣的行为,包括 python 中的 csv_reader 库
标签: python macos pandas import csv