我一直在用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
...
我需要为编码参数指定值吗?似乎我不应该这样做,因为读取文件在Windows上运行得很好。
发布于 2016-08-15 16:35:15
最大的线索是所有行都在一行上返回。这表示行终止符被忽略或不存在。
您可以为csv_reader指定行终止符。如果您使用的是mac,那么创建的行将以\r
结尾,而不是linux标准的\n
,或者更好,更好的方式是使用带有\r\n
的windows的挂起和腰带方法。
pandas.read_csv(filename, sep='\t', lineterminator='\r')
您还可以使用编解码器包打开所有数据。这可以以牺牲文档加载速度为代价来增加健壮性。
import codecs
doc = codecs.open('document','rU','UTF-16') #open for reading with "universal" type set
df = pandas.read_csv(doc, sep='\t')
发布于 2019-05-09 14:57:02
另一种选择是在命令pandas.read_csv(filename, sep='\t', engine='python')
中添加engine='python'
https://stackoverflow.com/questions/27896214
复制相似问题