我正在尝试使用 pandas 读取 .dta 文件:
import pandas as pd
my_data = pd.read_stata('filename', encoding='utf-8')
错误信息是:
ValueError: Unknown encoding. Only latin-1 and ascii supported.
其他编码形式也不起作用,例如用于处理中文字符的gb18030或gb2312 。如果我删除编码参数,DataFrame 将是所有垃圾值。
只需通过默认编码读取原始数据,然后传输到预期的编码!假设有乱码文本的列是column1
import pandas as pd
dta = pd.read_stata('filename.dta')
print(dta['column1'][0].encode('latin-1').decode('gb18030'))
结果print
会显示正常的汉字,gb2312
也可以制作。
查看pandas的源码(0.22.0版),read_stata支持的编码有('ascii', 'us-ascii', 'latin-1', 'latin_1', 'iso-8859-1', ' iso8859-1'、'8859'、'cp819'、'latin'、'latin1'、'L1')。所以你只能从这个列表中选择。