求助:使用Pandas无法打开IMF的WEOApr2022all.tsv文件
解决IMF WEOApr2022all文件Pandas读取失败问题
问题背景
从IMF下载的WEOApr2022all.tsv文件(部分场景下下载后会被自动命名为.xls后缀),使用Pandas读取时触发ParserError,尝试过制表符分隔符、read_excel方法均无效。
原代码
import pandas as pd path = "C:..\\WEOApr2022all.xls" dataframe = pd.read_csv(path, sep="\\t", encoding='windows-1252')
报错信息
chunks = self._reader.read_low_memory(nrows) File "pandas_libs\parsers.pyx", line 805, in pandas._libs.parsers.TextReader.read_low_memory File "pandas_libs\parsers.pyx", line 861, in pandas._libs.parsers.TextReader._read_rows File "pandas_libs\parsers.pyx", line 847, in pandas._libs.parsers.TextReader._tokenize_rows File "pandas_libs\parsers.pyx", line 1960, in pandas._libs.parsers.raise_parser_error pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 3, saw 14
错误原因
- 文件开头存在非数据行:IMF的WEO文件前10行左右是说明性文本,并非标准表头和数据,Pandas按指定分隔符读取时,前几行列数与后续数据不匹配,触发解析错误。
- 路径格式错误:
C:..\\是无效的Windows路径写法,需使用完整绝对路径或正确的相对路径。 - 文件类型混淆:该文件本质是制表符分隔的文本文件(TSV),并非真正的Excel文件,使用
read_excel方法无法正确解析。
解决方案
1. 修正文件路径
使用正确的Windows路径格式,推荐用原始字符串避免转义问题:
# 示例:绝对路径 path = r"C:\Downloads\WEOApr2022all.tsv" # 示例:相对路径(文件在当前脚本目录下) path = r".\WEOApr2022all.tsv"
2. 跳过开头的说明行
先打开文件确认实际表头所在行(通常在第11行,对应skiprows=10),读取时跳过这些非数据行:
import pandas as pd path = r"C:\Downloads\WEOApr2022all.tsv" # 跳过前10行说明内容,可根据实际文件调整行数 df = pd.read_csv(path, sep="\t", encoding='utf-8', skiprows=10)
若utf-8编码报错,替换为encoding='windows-1252'重试。
3. 验证数据起始行(可选)
不确定需要跳过多少行时,先读取前20行查看内容:
preview = pd.read_csv(path, sep="\t", encoding='windows-1252', nrows=20) print(preview)
根据输出确定表头开始的行号,调整skiprows参数即可。
内容的提问来源于stack exchange,提问作者flowover9
相关产品推荐
相关产品推荐

