使用 Pandas 读取 tab-delimited 文件 - 适用于 Windows,但不适用于 Mac
Reading tab-delimited file with Pandas - works on Windows, but not on Mac
我一直在使用 Pandas/Python 读取 Windows 中的 tab-delimited 数据文件,没有任何问题。数据文件的前三行包含注释,然后是 header。
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
如果将 error_bad_lines 参数设置为 read_csv 为 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.
上读取文件效果很好
最大的线索是所有行都在一行中返回。这表示行终止符被忽略或不存在。
您可以为 csv_reader 指定行终止符。如果您在 mac 上,创建的线条将以 \r
结束,而不是 linux 标准 \n
或更好的是 windows 的吊带和腰带方法\r\n
.
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')
另一种选择是将 engine='python'
添加到命令 pandas.read_csv(filename, sep='\t', engine='python')
我一直在使用 Pandas/Python 读取 Windows 中的 tab-delimited 数据文件,没有任何问题。数据文件的前三行包含注释,然后是 header。
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
如果将 error_bad_lines 参数设置为 read_csv 为 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.
上读取文件效果很好最大的线索是所有行都在一行中返回。这表示行终止符被忽略或不存在。
您可以为 csv_reader 指定行终止符。如果您在 mac 上,创建的线条将以 \r
结束,而不是 linux 标准 \n
或更好的是 windows 的吊带和腰带方法\r\n
.
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')
另一种选择是将 engine='python'
添加到命令 pandas.read_csv(filename, sep='\t', engine='python')