csv 阅读制表符分隔的文件与Pandas-工程在Windows上,但不是在Mac上

7eumitmz  于 2023-03-05  发布在  Windows
关注(0)|答案(3)|浏览(147)

我在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_csverror_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上阅读文件可以很好地工作。

2w3kk1z5

2w3kk1z51#

最大的线索是所有行都在一行上返回,这表明行结束符被忽略或不存在。
你可以为csv_reader指定行结束符,如果你在mac上,创建的行将以\r结束,而不是linux标准的\n,或者更好的是,用\r\n的windows的吊带和腰带方法。

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')
4ioopgfo

4ioopgfo2#

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

ibrsph3r

ibrsph3r3#

可以使用分隔符参数

input_data=pd.read_csv("my_data.txt",header=0,delimiter="\t")

相关问题