读取汉字.dta文件编码错误

Encoding Error of Reading .dta Files with Chinese Characters

我正在尝试使用 pandas 读取 .dta 文件:

import pandas as pd
my_data = pd.read_stata('filename', encoding='utf-8')

错误信息是:

ValueError: Unknown encoding. Only latin-1 and ascii supported.

其他编码形式也不起作用,例如 gb18030gb2312 用于处理中文字符。如果我删除编码参数,DataFrame 将全部是垃圾值。

查看pandas(版本0.22.0)的源代码,read_stata支持的编码是('ascii'、'us-ascii'、'latin-1', 'latin_1', 'iso-8859-1', 'iso8859-1', '8859', 'cp819', 'latin', 'latin1', 'L1')。所以你只能从这个列表中选择。

只需按默认编码读取原始数据,然后转为预期编码即可!假设出现乱码的列是column1

import pandas as pd
dta = pd.read_stata('filename.dta')
print(dta['column1'][0].encode('latin-1').decode('gb18030'))

print结果会显示正常的汉字,gb2312也可以。