我在Windows中用Pandas/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_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上阅读文件可以很好地工作。
3条答案
按热度按时间2w3kk1z51#
最大的线索是所有行都在一行上返回,这表明行结束符被忽略或不存在。
你可以为csv_reader指定行结束符,如果你在mac上,创建的行将以
\r
结束,而不是linux标准的\n
,或者更好的是,用\r\n
的windows的吊带和腰带方法。你也可以使用codecs软件包打开所有的数据,这可能会增加健壮性,但会降低文档加载速度。
4ioopgfo2#
另一个选项是将
engine='python'
添加到命令pandas.read_csv(filename, sep='\t', engine='python')
中ibrsph3r3#
可以使用分隔符参数